1. 將乙個整數轉換為位元組(如將整數255轉換為位元組)
byte b1 = (byte)255
輸出: b1 = -1
2. 將位元組轉換為無符號數(如將-1轉換為無符號數)
byte b1 = -1
int n = b1 & 0xff
輸出:n=255
3. 若轉換成無符號數中涉及到移位操作,還有些需要注意的地方。如:
例1byte b2 = -1;
(b2 & 0xff) << 8 或 (b2 << 8) & 0xffff (注:ff後無'l")
輸出:65280
例2byte b2 = -1;
(b2 & 0xffl) << 24 或 (b2 << 24) & 0xffffffffl (注:ff後有'l")
輸出:4278190080
由於例2中左移了24位,使得b2所表示的無符號數超過了int所能表示的最大值integer.max_value(2147483647),
因此轉換成無符號數時需要用long型來表示。這也就解釋了為什麼例2中"ff"後需要新增"l"。
位元組 字長 移位,補碼,有符號數與無符號數
位元組是最小的記憶體定址單元,乙個位元組是由8位二進位制數組成的,而二進位制數是記憶體的最小單元。字長是記憶體單元的位址的位數,每個字長指向乙個位元組,也就是c 指標中存放的位元組個數。比如32位字長的機器,虛擬位址範圍就是0 2 32 1,虛擬位址對應的是虛擬記憶體,虛擬記憶體就是乙個抽象的概念,...
有符號數與無符號數之間運算問題
以下實驗均在virual c 6中執行通過 這個問題測試是否懂得c語言中的整數自動轉換原則,有些開發者懂得極少這些東西。當表示式中存在有符號型別和無符號型別時所有的運算元都自動轉換為無符號型別。因此,從這個意義上講,無符號數的運算優先順序要高於有符號數,這一點對於應當頻繁用到無符號資料型別的嵌入式系...
有符號數與無符號數之間運算問題
有符號數與無符號數之間運算問題 以下實驗均在virual c 6中執行通過 這個問題測試是否懂得c語言中的整數自動轉換原則,有些開發者懂得極少這些東西。當表示式中存在有符號型別和無符號型別時所有的運算元都自動轉換為無符號型別。因此,從這個意義上講,無符號數的運算優先順序要高於有符號數,這一點對於應當...