一、整數(shù)數(shù)據(jù)類型
1、C語(yǔ)言整數(shù)類型包括char、short、int、long、int32_t、uint32_t、int64_t、uint64_t,以及unsigned表示非負(fù)。long在32位機(jī)器占4個(gè)字節(jié),在64位占8個(gè)字節(jié)。
2、C和C++都支持有符號(hào)和無(wú)符號(hào)數(shù),Java只支持有符號(hào)數(shù)。
二、無(wú)符號(hào)數(shù)的編碼
1、如果一個(gè)無(wú)符號(hào)數(shù)占w位,則這個(gè)無(wú)符號(hào)數(shù)的取值范圍是從0到2的w次方-1。
2、無(wú)符號(hào)數(shù)編碼的唯一性:每個(gè)介于0到2的w次方-1的數(shù)都有唯一一個(gè)w位的值編碼。
3、B2U表示從二進(jìn)制轉(zhuǎn)為無(wú)符號(hào)數(shù),U2B表示從無(wú)符號(hào)數(shù)轉(zhuǎn)為二進(jìn)制,B2U是一個(gè)雙攝。
三、編碼補(bǔ)碼
1、最常見(jiàn)的有符號(hào)數(shù)的計(jì)算機(jī)表示方式就是補(bǔ)碼。

2、最高有效位成為符號(hào)位,為1時(shí)表示負(fù)數(shù)。
3、補(bǔ)碼的表示范圍從負(fù)的2的W-1次方到2的W-1次方減1。
4、補(bǔ)碼也具有唯一性。
5、C語(yǔ)言標(biāo)準(zhǔn)沒(méi)有要求用補(bǔ)碼形式表示有符號(hào)數(shù),但是幾乎所有機(jī)器都是這么做的,所以遵循補(bǔ)碼表示的整數(shù)范圍可以保證程序最大的可移植性。
四、有符號(hào)數(shù)和無(wú)符號(hào)數(shù)之間的轉(zhuǎn)換
1、如果u表示無(wú)符號(hào)數(shù)、i表示有符號(hào)數(shù),(int)u會(huì)把u強(qiáng)制轉(zhuǎn)換為有符號(hào)數(shù),(unsigned)i會(huì)把i強(qiáng)制轉(zhuǎn)換為無(wú)符號(hào)數(shù)。強(qiáng)制轉(zhuǎn)換類型的結(jié)果位值不變,只是改變了解釋這些位的方式。
2、補(bǔ)碼轉(zhuǎn)無(wú)符號(hào)數(shù):

3、無(wú)符號(hào)數(shù)轉(zhuǎn)補(bǔ)碼:

五、C語(yǔ)言的有符號(hào)數(shù)和無(wú)符號(hào)數(shù)
1、一般聲明的數(shù)字都是有符號(hào)的,要聲明無(wú)符號(hào)數(shù)要加上后綴U或u,例如12345U。
2、t = (int)u強(qiáng)制顯示轉(zhuǎn)換;t = u隱式轉(zhuǎn)換。
3、printf可以用u%輸出有符號(hào)數(shù),也可以用d%輸出無(wú)符號(hào)數(shù)。
4、當(dāng)執(zhí)行一個(gè)運(yùn)算包括有符號(hào)和無(wú)符號(hào)數(shù)時(shí),C語(yǔ)言將有符號(hào)數(shù)轉(zhuǎn)換為無(wú)符號(hào)數(shù)。這會(huì)導(dǎo)致一些問(wèn)題,例如-1 < 0U會(huì)轉(zhuǎn)換為429296...U < 0U,結(jié)果會(huì)是false。
六、擴(kuò)展一個(gè)數(shù)字的位表示
1、將小類型轉(zhuǎn)換為大類型,根據(jù)有符號(hào)和無(wú)符號(hào)有兩種轉(zhuǎn)換。
2、無(wú)符號(hào)數(shù)的零擴(kuò)展:

3、補(bǔ)碼數(shù)的符號(hào)擴(kuò)展:

4、當(dāng)把short轉(zhuǎn)換為unsigned時(shí),先改變大小,再完成從有符號(hào)到無(wú)符號(hào)的轉(zhuǎn)換。
七、截?cái)鄶?shù)字
1、截?cái)酂o(wú)符號(hào)數(shù):

2、截?cái)嘤蟹?hào)數(shù):

八、關(guān)于有符號(hào)和無(wú)符號(hào)數(shù)的建議
1、把字當(dāng)做數(shù)字時(shí),絕不使用無(wú)符號(hào)數(shù),能夠避免隱式類型轉(zhuǎn)換的一些bug。
2、如果把字當(dāng)做位的集合,無(wú)符號(hào)數(shù)時(shí)很有用的。