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