c語言無符號作用?
有無符號主要是指一個整形變量的最高bit位是否用來表示符號。如果是有符號型那么計算機認(rèn)為,該整形變量的最高位是用來表示符號的:正數(shù)為0,負(fù)數(shù)為1;最高bit位對數(shù)值的大小沒有貢獻。如果是無符號型,那么計算機認(rèn)為所有的bit為都是用來表示數(shù)值的大小,同時默認(rèn)是正數(shù)。
整型有無符號(unsigned)和有符號(signed)兩種類型,在默認(rèn)情況下聲明的整型變量都是有符號的類型(char有點特別),如果需聲明無符號類型的話就需要在類型前加上unsigned。無符號版本和有符號版本的區(qū)別就是無符號類型能保存2倍于有符號類型的數(shù)據(jù),比如16位系統(tǒng)中一個int能存儲的數(shù)據(jù)的范圍為-32768~32767,而unsigned能存儲的數(shù)據(jù)范圍則是0~65535。
在一些不可能取值為負(fù)數(shù)的時候,可以定義為unsigned,在一些底層的嵌入式編程的數(shù)據(jù)一般都是無符號的。
有無符號主要是指一個整形變量的最高bit位是否用來表示符號。如果是有符號型那么計算機認(rèn)為,該整形變量的最高位是用來表示符號的:正數(shù)為0,負(fù)數(shù)為1;最高bit位對數(shù)值的大小沒有貢獻。如果是無符號型,那么計算機認(rèn)為所有的bit為都是用來表示數(shù)值的大小,同時默認(rèn)是正數(shù)
C語言中無符號整型變量和有符號整型變量在同一系統(tǒng)中所占用的數(shù)據(jù)寬度一樣. 不同的是: 有符號整型變量把數(shù)據(jù)的最高位作為符號位使用, 因此能表示數(shù)的正負(fù), 表示范圍: 對于16位的變量為: -32368<=變量<=32367, 對于32位的變量為:-2147483648<=變量<=2147483647; 無符號整型變量把數(shù)據(jù)的最高位仍作為數(shù)據(jù)位使用, 因此不能表示負(fù)數(shù), 表示范圍: 對于16位的變量為: 0<=變量<=65535, 對于32位的變量為: 0<=變量<=429467295 。