⑴ 在c語言中 2 進制8進制16進制中都怎麼表示負數如何定義類型如何輸出
8進制和16進制無符號(unsigned)類型
用0***表示八進制數,如0123表示八進制數123
用0x***表示16進制數,如0x1a表示16進制數1A
八進制數和16進制數都可存放於unsigned int中
輸出時,八進制標識符%o 16進制%x
⑵ 在c語言中怎麼表示負數。
第一位符號位1為負,0為正。 正數的補碼和2進制原碼是一樣的。
負數的補碼:
1、先取絕對值|x| ;
2、對|X|+1 ;
3、對|X|+1 取反,就得到它的補碼了 。
計算機中存放整型數據都是按補碼的形式存放的。
(2)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。
⑶ C語言里負數是整數嗎
在VC C++上是正常啊
將整個程序復上來看看
它是指聲明部分是整數吧,
如int c = 1e-3;
printf("%d\n", c);
輸出就一定是0,因為int只能保存是整數嘛;修改為float就正常了(輸出變成%f)。
⑷ c語言中負數如何表示
c語言中負數表示方法就是在數前加負號「-」,比如:
-5,-10000,等
一個變數賦值為負數也是如此,比如:
x=-1000;
⑸ 請問c語言中的int類型-32768〜32767的負數是什麼,詳細的,不能超出這個范圍值
C語言如果使用16位系統,那麼int類型的有效位數就是16位(二進制數)
其中最高位代表正數(包括0)和負數的標識,0代表正,1代表負
負數一律使用補碼表示,即將這個負數相對應的正數所有位取反(1變0,0變1),再加1,即得補碼
而-32768是16位二進制(補碼)能表示的最小負整數,32767為16位二進制去掉最高位後能表示的最大正整數。
如1的二進製表示是15個0,最後一位是1
-1的二進製表示為 16個1
0的二進製表示為 16個0
-32768 的二進製表示為 最高位1 後面15個0
32767 的二進製表示為 最高位0 後面15個1
⑹ C語言里負數是整數嗎
不一定,這個負整數要在int的范圍內
int型範圍在 -32768到32767之間
⑺ 為什麼c語言負數是以補碼形式存放的
以-1和+1相加為例子。
一個位元組,如果是負數,它是255,如果是正數,它是
-1。
255+1
=
256(1,0000,0000)
-1+1
=
0(0,0000,0000)
因為加到256後並不會真的進位,而是把op置位。所以整負數相加的問題很多地方都可以不去理會了。不用真正去區分正負了,只要依據最後需要的類型去處理結果就可以。
⑻ C語言如何表示正負值問題
c語言有兩種數據類型,一種是整型,一種是浮點型 ,整型類型一般用的原碼表示,浮點類型一般用的IEEE754標准進行編碼。
整型數中原碼表示正負數,取最高位為符號位,以8位二進制數來表示1和-1。1的二進制為
0 000 0001 //最高位為符號位,0表示正數,1表示負數
1 000 0001 //這個表示-1
IEEE754浮點數編碼,使用的格式類似於 (-1)^s * M* 2^E,其中s是符號位,M是有效位數,E指的是指數,s符號位佔1位,如果是0,則(-1)的0次方為1,表示是一個正數,如果s位是-1,則表示是一個負數。
⑼ c語言中負數是按補碼存儲,怎麼讀出來哪
本質是,都是二進制數,或者是十六進制數。
舉個例子:
-1,在16位CPU中,用補碼表示,則為1111 1111 1111 1111,或者0xFFFF。
在C語言中,如果定義為無符號數,則0xFFFF讀出來就是65535,
如果定義為有符號數,則0xFFFF讀出來就是-1。
同樣的二進制數,類型不同,解釋出來的結果也不同。