資料表示法與數字系統
無號整數(unsigned integer)
無號整數是電腦儲存整數最簡單的方式:一段固定數量的位元,直接讀成樸素的二進位,沒有保留位置給負號。因為沒有任何東西代表負,無號值永遠是零或正——就像里程表或計數器,只會從零往上爬。當一個值真的不可能是負的(例如長度、物品數量或記憶體位址)時,這就是正確的選擇。
用 n 個位元可以儲存從 0 到 2^n 減 1 的任何值。原因在位值:最大的圖樣是全部都是 1,它把每個位值 2^0 + 2^1 + … + 2^(n-1) 全加起來,而這個總和正好是 2^n 減 1。所以 8 位元無號整數的範圍是 0 到 255,16 位元是 0 到 65535,32 位元是 0 到約 42.9 億。讀這個數就是普通的二進位訣竅:在出現 1 的地方把位值加起來。
無號整數之所以重要,是因為那個固定範圍有一道硬邊。如果你加超過最大值,計數會繞回到零(8 位元裡 255 + 1 變成 0),這就是無號形式的溢位。這不是罕見的角落情況:它造成過真實的故障,例如計數器悄悄歸零。一個經典又危險的新手錯誤是:用「大於或等於 0」當條件、讓一個無號變數倒數——因為它永遠不可能小於零,從零再減一會繞回到最大值,迴圈便永遠跑不完。
8 位元無號整數可裝 0 到 255。圖樣 0b11111111 是 255,最大值;再加 1 會繞回 0b00000000,也就是 0。在這套方案裡沒有辦法寫出負數。
n 位元無號整數的範圍是 0 到 2^n 減 1,到頂後會繞回。
用「while x >= 0」拿無號變數倒數會無限迴圈,因為無號值永遠不為負——在零時再減一會繞回最大值。改用有號型別,或重寫迴圈條件。
又稱
另見