電腦算術

在C語言中,32位元無號整數(unsigned int)的 0 減去 1 的結果為下列何者?

  1. A−1
  2. B4294967295
  3. C維持0不變
查看答案與解析

正確答案:B. 4294967295

無號整數沒有負數,C語言規定結果以除以 2³² 的餘數處理(繞回)。0 − 1 會成為 2³² − 1 = 4294967295,其位元串全為1。因此,若在無號變數上將「每次減1直到i成為0」的迴圈寫成 i >= 0,條件會恆為真而永遠無法結束。無號數無法表示 −1,也不會停在0(飽和)。

  • A. 無號整數無法表示負數。
  • B. 正確。繞回為 2³² − 1 = 4294967295。
  • C. 不會有停在0的飽和。
練習這個領域 前往領域頁面

電腦算術的其他題目

  1. 在無號整數彼此的加法中,判定結果超過可表示範圍(位數溢出)的方法,下列何者正確?
  2. 關於浮點數中相鄰可表示值之間的間隔,下列說明何者正確?
  3. 在IEEE 754的單精度浮點數中,從0開始能準確表示所有整數的上限為下列何者?
  4. 在金額的計算中,多半不使用二進位浮點數,而是以最小單位(1圓或1分)為1的整數來處理,其主要理由為下列何者?
  5. 在AI的混合精度訓練中,大部分計算以FP16或bfloat16進行,同時以FP32保存權重的原始值(主權重,master weights),其主要理由為下列何者?