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

CSAPP 習題 2.2 解答:2 的冪次十進制與十六進制對照表填寫

     編輯:關於C語言

CSAPP 習題 2.2 解答:2 的冪次十進制與十六進制對照表填寫

CSAPP 2.2 要求填寫 2^n 的十進制與十六進制值,考察對二進制權重與十六進制緊湊表示的熟悉度。掌握常見 2 的冪次值,能極大加快內存地址、位掩碼、緩衝區大小的心算速度。

標準填寫表

n2^n (十進制)2^n (十六進制)典型應用場景
5320x20ASCII 大小寫轉換位、位掩碼
71280x80符號位、高位標記
95120x200扇區大小、頁表項
1416,3840x400016KB 緩衝區、段描述符
1665,5360x1000064KB 邊界、Unicode BMP 範圍
17131,0720x20000128KB、大頁對齊
19524,2880x80000512KB、L2 緩存行

速記口訣

  • 2^10 = 1024 ≈ 10^3(Kilo)
  • 2^20 = 1,048,576 ≈ 10^6(Mega)
  • 2^30 ≈ 10^9(Giga)
  • 十六進制:2^n 只有一個 1,位置為 n/4(整除)處,餘數決定低位:
    餘 0 → 1、餘 1 → 2、餘 2 → 4、餘 3 → 8

例:n=19

19 ÷ 4 = 4 餘 3
→ 第 4 個十六進制位(從 0 計)為 8,其餘為 0
→ 0x8 0000 = 0x80000

實戰價值

  • 快速判斷地址對齊:(addr & (align-1)) == 0,align 通常為 2 的冪。
  • 位掩碼構造:(1u << n) - 1 得到低 n 位全 1。
  • 內存大小心算:見 0x200000 即知 2MB(2^21)。

建議將 n=0~31 的 2^n 十六進制值全部內化,這是系統級編程的「乘法口訣表」。

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