2.2 整數(shù)表示

一、整數(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ǔ)碼。


屏幕快照 2017-09-13 下午4.17.10.png

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ù):


補(bǔ)碼轉(zhuǎn)無(wú)符號(hào).png

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


屏幕快照 2017-09-18 下午8.29.29.png

五、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ò)展:


屏幕快照 2017-09-18 下午8.42.00.png

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


屏幕快照 2017-09-18 下午8.42.43.png

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ù):


屏幕快照 2017-09-18 下午8.48.04.png

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


屏幕快照 2017-09-18 下午8.49.11.png

八、關(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í)很有用的。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 版權(quán)聲明:本文為 gfson 原創(chuàng)文章,轉(zhuǎn)載請(qǐng)注明出處。注:作者水平有限,文中如有不恰當(dāng)之處,請(qǐng)予以指正,萬(wàn)分感謝...
    gfson閱讀 383評(píng)論 0 0
  • [學(xué)習(xí)信息的存儲(chǔ)(編碼)和處理有什么用?] 研究數(shù)字在計(jì)算機(jī)中是如何存儲(chǔ)的,以及值的范圍和算術(shù)屬性,有助于我們跨越...
    唐魚的學(xué)習(xí)探索閱讀 3,476評(píng)論 4 11
  • 唐朝。長(zhǎng)安。 我是錦瑟,出身長(zhǎng)安名門,長(zhǎng)得珠圓玉潤(rùn),芙蓉為面柳如眉,天真活潑,性喜熱鬧,從身材和性子都和我家遠(yuǎn)親當(dāng)...
    納蘭若儀閱讀 804評(píng)論 6 5
  • 我是一名小學(xué)語(yǔ)文教師,也許大家會(huì)覺(jué)得我文筆很好,可是我告訴大家,在一年前,我連寫一篇完整的文章都很難。但由于工作的...
    小賢哥2017閱讀 3,252評(píng)論 32 83
  • 廁所是世人覺(jué)得污穢的場(chǎng)。 人類其實(shí)總是在和污穢打交道。我們剛見(jiàn)天日時(shí),身上裹著的是血與尿,本不是天生就潔的。第一次...
    泰倫斯與馬賽克閱讀 1,059評(píng)論 1 3

友情鏈接更多精彩內(nèi)容