A. c語言中怎麼輸出一個負16進制的數
負數用十六進製表示,通常用的是補碼的方式表示。
int
a=-3;
在C語言中可以這么輸出:printf("%hhx\n",
a);
十六進制(英文名稱:Hexadecimal),是計算機中數據的一種表示方法。同我們日常生活中的表示法不一樣。它由0-9,A-F組成,字母不區分大小寫。與10進制的對應關系是:0-9對應0-9;A-F對應10-15;N進制的數可以用0~(N-1)的數表示,超過9的用字母A-F。
正數的補是它本身;負數的補碼是它本身的值每位求反,最後再加一。
例如:求-3的十六進制
3的十六進制為0003,3求反之後是C,再加1,成D,所以-3的十六進制就是:FFFD
B. c語言問題,為什麼會輸出負數
這個問題有多種可能,不一而足。
演算法有錯誤,最終計算結果是負數。輸出自然會是負數。
例如:
inta=1;
intb=a-2;
printf("b=%d",b);
//輸出結果:b=-1超過變數類型的最大取值范圍,發生溢出。
例如Turbo C里int是16位,取值范圍-32768~32767。如果計算過程當中,數值超過32767,由於補碼的關系。結果就有可能是負數。這種情況,就需要使用取值范圍更大的數據類型。
常式:
#include<stdio.h>
voidmain(){
inta,b,ch;
a=32767;
b=a+1;
printf("a=%d,b=%d",a,b);
ch=getch();
}
//輸出結果:a=32767,b=-32768
C. 在C語言里要輸出一個負數的值!
type(數的類型)number(你要輸出的數);
printf("% +d",number)
例如
int i=-617;
printf("% +d",i);
"+"號是輸出符號的
D. 在c語言中怎麼表示負數。
第一位符號位1為負,0為正。 正數的補碼和2進制原碼是一樣的。
負數的補碼:
1、先取絕對值|x| ;
2、對|X|+1 ;
3、對|X|+1 取反,就得到它的補碼了 。
計算機中存放整型數據都是按補碼的形式存放的。
(4)c語言中如果輸出一個負數擴展閱讀:
有符號數的表示方法是由硬體決定,而不是由C決定的。有三種表示方法:
1、二進制原碼
0000 0001 表示 1
1000 0001 表示 -1
這個方法有個缺點是有兩個零: +0 和 -0。這會引起混淆,而且用兩個位組合來表示一個值也有些浪費。
2、二進制補碼(最普遍的系統)
區別在於 singned 和 unsigned:
1)如果是無符號位元組, 1000 0000 該組合為 128
2)如果是有符號位元組, 1000 0000 該組合為 -128
第一種表示數的范圍是 0 ~ 255;
第二種表示數的范圍是 -128 ~ +127,對於一個二進制補碼數取負數,最簡單的方法就是取反、加 1。
3、二進制反碼
通過反轉位組合中的每一位以形成一個數的負數,例如:
0000 0001 表示 1
1111 1110 表示 -1
這種方式也有一個 -0:1111 1111。其范圍是 -127 ~ +127。
E. C語言負數用%u形式輸出
%u的參數是指的輸出無符號數,1的二進制碼是 0000 0001 (八位進製表示的話) 。 -1的表示就是各位求反+1 八位二進制碼就是1111 1111 ,你用%u的參數就是輸出無符號數,就不考慮最高位了,所以就是 1111 1111的十進制值,就是255 ,16位的計算機同理。