C語言的unsigned int是什麼意思

時間 2021-05-23 04:10:12

1樓:洪萍佘翎

unsigned

short為無符號短整形,在計算機中是用16位二進位制數儲存,-1在計算機中被儲存為1111111111111111因為是無符號型的,所以開頭的一為被計算機當做數值位

轉換為十進位制,即:1*2^16

+1*2^15+.....+

1*2^1

=65535,其它的結果你可以以此類推。

2樓:碧魯天真庹泉

無符號整型,注意它的數值表示範圍即可。

c語言中unsigned和signed在宣告時有什麼作用

3樓:亦木靜汐

^1、unsigned的作用就是將數字型別無符號化, 例如 int 型的範圍:-2^31 ~ 2^31 - 1,而unsigned int的範圍:0 ~ 2^32。

看起來unsigned 是個不錯的型別,尤其是用在自增或者沒有負數的情況。但是在實際使用中會出現一些意外的情況。

2、signed在預設情況下宣告的整型變數都是有符號的型別(char有點特別),如果需宣告無符號型別的話就需要在型別前加上unsigned。無符號版本和有符號版本的區別就是無符號型別能儲存2倍於有符號型別的正整數資料。

4樓:匿名使用者

signed 和 unsigned 是c語言中的型別指示符(type specifier),signed 指示被宣告的物件的型別為有符號整型(signed integer type),unsigned 指示被宣告的物件的型別為無符號整型(unsigned integer type)。

除了用於 bit field,單獨使用的 int 即指示有符號整型,此時 signed 沒有實際意義,int 和 unsigned 一同使用時指示無符號整型。

char,signed char,unsigned char 是三個不同的型別(char 和另外兩個之一的二進位制表示方法相同,至於 char 具體是否有符號,通常可通過編譯指令指定)。

對於 bit field, signed int 型別的 bit field 總是有符號的,unsigned int 型別的 bit field 總是無符號的,而單獨使用的 int 是否表示有符號,由編譯器定義。

無符號數的二進位制表示(object representation)由兩部分構成,即 value bits 和 padding bits,value bits 是一串二進位制位,第 m 個 value bit 表示 2 的 m-1 次方,因此 n 個 value bits 加起來就可以表示 0 到 2 的 n 次方減一 這個範圍內的所有整數。padding bits 不影響數的值(可能不存在 padding bit )。

有符號數的二進位制表示(object representation)由三部分構成,即 sign bit,value bits 和 padding bits ,其中 sign bit 只有一位,這一位的值為 0 時表示這個數為正數,此時它不影響有符號數的值,value bits 的含義與無符號數中的 value bits 相同。sign bit 為 1 時表示這個數為負數,此時這個數可以使用原碼、反碼、補碼 中的任何一種編碼來表示數值。和無符號數一樣,padding bits 不影響數的值(可能不存在 padding bit )。

例如,當某個無符號型別有 32 個value bits 時,它的第 1 個 value bit 表示 2 的 0 次方,第 2 個 value bit 表示 2 的 1 次方,……,第 32 個 value bit 表示 2 的 31 次方。當所有 value bits 都為 1 時,就表示 2 的 0 次方加 2 的 1 次方加……加 2 的 31 次方,即 2 的 32次方減一;當所有的 value bits 都為 0 時,就表示 0 ,這個無符號型別的取值範圍就是 0 到 2 的 32 次方減一。

與之對應的有符號型別有 1 個sign bit 和 31 個 value bits,當 sign bit 為 0 時,可以表示 0 到 2 的 31 次方減一範圍內的任何乙個整數,如果使用補碼,當 sign bit 為 1 時,可以看作 sign bit 的值是 2 的 31 次方 的相反數,因此當 sign bit 為 1 時 sign bit 加上 value bit 一共可以表示 2 的 31 次方 的相反數到 -1 範圍內的任何乙個整數,考慮所有情況,這個有符號型別的取值範圍就是 2 的 31 次方 的相反數 到 2 的 32 次方減一。

5樓:幻の上帝

signed和unsigned用於修飾整數型別(包括char,從ansi c89標準開始支援)。

signed表示有符號

,unsigned表示無符號。對應的有符號數的最大取值要比無符號的小約一半,因為最高一位被用來表示符號。

預設的int、short、long、long long為有符號數,也就是說,int等價於signed int,short等價於signed short,long等價於signed long,long long等價於signed long long。但是char本身是signed char還是unsigned char,取決於語言的實現(編譯器)。

範圍列表如下:

signed char:[-2^7, 2^7)即[-128, 128);

unsigned char:[0, 2^8)即[0, 256);

signed n位整數:[-2^(n-1), 2^(n-1));

unsigned n位整數:[0, 2^n)。

注意整數型別佔多少空間是不確定的,只能保證sizeof(shor)<=sizeof(int)<=sizeof(long)。一般32位平台上,int和long為32位,short為16位,long long為64位。

====

[原創回答團]

6樓:匿名使用者

主要是取值範圍。

unsigned和signed在一種型別下,unsigned表示在這個範圍大小的整數,signed一般都是在這個範圍內的從負到正

有什麼不明白可以hi我 細聊

7樓:匿名使用者

簡單說,unsigned是無符號型別,signed 是有符號型別。比如unsigned int 的取植範圍從零開始,signed int 取植有負數。

不明白搜尋百度百科 unsigned 就可以

8樓:

unsigned宣告乙個變數為無符號數,signed宣告乙個變數為有符號數.

比如: unsigned char i1;//i1資料範圍為0~255

signed char i2; //i2資料範圍為-128~-127

C語言與C 結構體的區別,C語言和C 語言的區別是什麼?

c語言的結構就是值型別,跟int,char沒有什麼區別 c 的結構跟類已經非常接近了,就是如果不具體說明,預設為共有 比如說這個結構體吧.struct mystruct str 在c 裡可以這樣用 mystruct s1 mystruct 就是一個型別,在c裡只能這樣用其 struct mystru...

c語言程式設計不是c哦,C語言和C 語言的區別是什麼?

include int main return 1 額 你這是要幹嘛?c語言和c 語言的區別是什麼? 小張 c語言與c 的區別有很多 1,全新的程式程式思維,c語言是面向過程的,而c 是物件導向的。2,c語言有標準的函式庫,它們鬆散的,只是把功能相同的函式放在乙個標頭檔案中 而c 對於大多數的函式都...

C語言AA的意思C語言 的意思,c語言中c a是什麼意思

博爾思拓 首先你要明白什麼是表示式,還有變數。a是乙個變數。a a都是a加了1.比如a原來是1,執行了a 或 a後,a變數的值就是2了 至於a 和 a的區別主要是在表示式上的區別。a是先執行了a加1後,參與表示式的計算。a 是a先參與表示式的計算,後執行自加1.比如 int a,b a 1 如果你想...