uint16是16位無符號(hào)整型;整型有無符號(hào)和有符號(hào)兩種類型,在默認(rèn)情況下聲明的整型變量都是有符號(hào)的類型,如果需聲明無符號(hào)類型的話就需要在類型前加上unsigned。
本文操作環(huán)境:Windows7系統(tǒng),DELL G3電腦
uint16是什么數(shù)據(jù)類型?
uint16是16位無符號(hào)整型,uint8是8位無符號(hào)整型
整型有無符號(hào)(unsigned)和有符號(hào)(signed)兩種類型,在默認(rèn)情況下聲明的整型變量都是有符號(hào)的類型(char有點(diǎn)特別),如果需聲明無符號(hào)類型的話就需要在類型前加上unsigned。在一些不可能取值為負(fù)數(shù)的時(shí)候,可以定義為unsigned,在一些底層的嵌入式編程的數(shù)據(jù)一般都是無符號(hào)。
相關(guān)介紹:
負(fù)數(shù)時(shí)的有符號(hào)整型和無符號(hào)整型的轉(zhuǎn)換
當(dāng)執(zhí)行一個(gè)運(yùn)算時(shí)(如這里的a>b),如果它的一個(gè)運(yùn)算數(shù)是有符號(hào)的而另一個(gè)數(shù)是無符號(hào)的,那么C語言會(huì)隱式地將有符號(hào) 參數(shù)強(qiáng)制類型為無符號(hào)數(shù),并假設(shè)這兩個(gè)數(shù)都是非負(fù)的,來執(zhí)行這個(gè)運(yùn)算。
整數(shù)在計(jì)算機(jī)中通常是以補(bǔ)碼的形式存在的,而-1的補(bǔ)碼(用4個(gè)字節(jié)儲(chǔ)存)為1111,1111,1111,1111。對(duì)大多數(shù)C語言的實(shí)現(xiàn),處理同樣字長的有符號(hào)數(shù)和無符號(hào)數(shù)之間的相互轉(zhuǎn)換的一般規(guī)則是:數(shù)值可能會(huì)改變,但是位模式不變。
也就是說,將unsigned int強(qiáng)制類型轉(zhuǎn)換成int,或?qū)nt轉(zhuǎn)換成unsigned int底層的位表示保持不變。也就是說,即使是-1轉(zhuǎn)換成unsigned int之后,它在內(nèi)存中的表示還是沒有改變,即1111,1111,1111,1111。
同樣的儲(chǔ)存表示對(duì)于應(yīng)用程序而言可能對(duì)應(yīng)著不同的數(shù)據(jù),例如1111,1111,1111,1111對(duì)于有符號(hào)數(shù)而言它表示-1,但對(duì)于無符號(hào)數(shù)而言,它表示UMax(因?yàn)闆]有符號(hào)位,就像正數(shù)的反碼補(bǔ)碼都是它本身一樣,且最高位也不表示符號(hào)位),但是它們的底層存儲(chǔ)都是一樣的。