有符號數和無符號數區別



返回 我的技術棧(Technology Stack)



有符號數和無符號數區別就是所能表示的范圍不同

有符號數

有符號數是最高位為符號位,0代表正數,1代表負數。

#include <stdio.h>

int main()
{
	signed int a = -1089474374; //定義有符號整型變量a
	printf("%X\n", a); //結果為 BF0FF0BA

	//B       F      0       F       F      0        B	      A
	//1011    1111   0000    1111    1111   0000     1011     1010
        // 這里 -1089474374 是負數,所以,最高位為1 

	return 0;
}

無符號數

無符號數最高位不是符號位,而就是數的一部分,無符號數不可能是負數。

#include <stdio.h>

int main()
{
	unsigned int a = 3236958022; //定義無符號整型變量a
	printf("%X\n", a); //結果為 C0F00F46
   
    //C       0      F        0       0       F        4	      6
    //1100    0000   1111     0000    0000    1111     0100       0110
    // 這里 3236958022 是正數,即便最高位為1 

	return 0;
}

當我們寫程序要處理一個不可能出現負值的時候,一般用無符號數,這樣可以增大數的表達最大值。


有符號和無符號整型取值范圍

默認是有符號型的
數據類型 long 一般在 32 位程序中為 4 字節,在 64 位程序中則為 8 字節 。

數據類型 占用空間 取值范圍
short 2字節 -32768 到 32767 (-\(2^{15}\) ~ \(2^{15}\)-1)
int 4字節 -2147483648 到 2147483647 (-\(2^{31}\) ~ \(2^{31}\)-1)
long 4字節 -2147483648 到 2147483647 (-\(2^{31}\) ~ \(2^{31}\)-1)
unsigned short 2字節 0 到 65535 (0 ~ \(2^{16}\)-1)
unsigned int 4字節 0 到 4294967295 (0 ~ \(2^{32}\)-1)
unsigned long 4字節 0 到 4294967295 (0 ~ \(2^{32}\)-1)

參考:
[1]C基礎講義2018修訂版(黑馬程序員)



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM