首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C 語言無符號整數 unsigned 詳解與補碼表示

     編輯:關於C語言

unsigned 關鍵字:擴展正整數表示範圍

在 16 位元系統中,int 佔 2 個位元組(16 bits),若為有號整數,其範圍為 -32,768 ~ 32,767;而 unsigned int(或簡稱 unsigned)同樣佔 16 bits,但將最高位視為數值位而非符號位,範圍擴展為 0 ~ 65,535。

補碼與無符號解讀

計算機以補碼儲存整數。對於相同的位元模式:

  • 若視為有號數,最高位 1 代表負數(如 0xFFFF = -1)
  • 若視為無符號數,最高位 1 仍代表數值權重(0xFFFF = 65,535)

因此,unsigned 並非增加儲存空間,而是改變了對位元模式的「解讀規則」。

常見簡寫與編譯器行為

單獨寫 unsigned 時,絕大多數編譯器預視為 unsigned int。同理,unsigned short、unsigned long、unsigned long long 皆遵循此規則。

實務提醒

  • 混合有號/無號運算時,有號會被隱式提升為無號,易導致邏輯錯誤(如 -1 > 0u 為真)
  • 陣列索引、迴圈計數器宜用 size_t(本質為無號)而非 int
  • 列印 unsigned 應用 %u、%lu、%llu 等格式字串

理解補碼與無符號表示的本質差異,是避開 C 語言整數陷阱的關鍵。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved