1
考慮以下程式碼,推敲其作用 (選出最符合行為的描述)
將 Func32
改寫為以下功能等價的程式碼:
作答區
Func32 = ?
(a)
計算對 x
的二進位表示法中,總有有幾個 bit 為 1
,如果全部都是 1
,那麼回傳 32
(b)
計算對 x
的二進位表示法中,總有有幾個 bit 為 0
,如果全部都是 0
,那麼回傳 32
(c)
計算輸入數值 x
的二進位表示中,回傳開頭 (從高位到低位元) 有幾個 0,倘若 x
為 0x0
,則輸出 32(d)
計算輸入數值 x
的二進位表示中,回傳開頭 (從高位到低位元) 有幾個 1,倘若 x
每個 bit 均為 1
,則輸出 32(e)
計算輸入數值 x
的二進位表示中,回傳尾巴 (低位元到高位) 有幾個 1,倘若 x
每個 bit 均為 1
,則輸出 32(f)
計算輸入數值 x
的二進位表示中,回傳尾巴 (低位元到高位) 有幾個 0,倘若 x
為 0x0
,則輸出 32M1 = ?
(a)
0xF(b)
0xFF(c)
0x12(d)
0x14(e)
0x16(f)
0x18(g)
0x1AM2 = ?
(a)
0x1F(b)
0x1E(c)
0x1D(d)
0x1C(e)
0x1B(f)
0x1A(g)
0x10M3 = ?
(a)
0x1E(b)
0x1D(c)
0x1C(d)
0x1B(e)
0x1A(f)
0x10延伸題目:
Func32
的指令,隨後在 GitHub 專案中找到 3 個應用案例並解說;Func32
(或下方 Func64
) 的指令加速的案例;2
延伸測驗 1
,將 Func32
應用於以下程式碼,可輸入給定 64-bit 數值的 10 進位表達方式 (類似 printf
函式的 %d
格式),補完程式碼並推測其作用。
作答區
Func64
的作用為?
(a)
計算對 x
的二進位表示法中,總有有幾個 bit 為 1
,如果全部都是 1
,那麼回傳 64
(b)
計算對 x
的二進位表示法中,總有有幾個 bit 為 0
,如果全部都是 0
,那麼回傳 64
(c)
計算輸入數值 x
的二進位表示中,回傳開頭 (從高位到低位元) 有幾個 0,倘若 x
為 0x0
,則輸出 64(d)
計算輸入數值 x
的二進位表示中,回傳開頭 (從高位到低位元) 有幾個 1,倘若 x
每個 bit 均為 1
,則輸出 64(e)
計算輸入數值 x
的二進位表示中,回傳尾巴 (低位元到高位) 有幾個 1,倘若 x
每個 bit 均為 1
,則輸出 64(f)
計算輸入數值 x
的二進位表示中,回傳尾巴 (低位元到高位) 有幾個 0,倘若 x
為 0x0
,則輸出 64P1
應該為?
(a)
divisor != 0(b)
mask >>= 1(c)
divisor & mask(d)
mask != 0(e)
divisor | mask(f)
divisor ^ maskP2
應該為?
(a)
divisor != 0(b)
divisor & bits(c)
bits–(d)
mask >>= 1(e)
mask != 0(f)
divisor | mask(g)
divisor ^ maskP3
= ?
(a)
0x0(b)
0x1(c)
0x10(d)
0x11(e)
0x20(f)
0x21(g)
0x30(h)
0x31P4
= ?
(a)
2(b)
4(c)
8(d)
16(e)
10(f)
24P5
= ?
(a)
0x0(b)
0x1(c)
0x10(d)
0x11(e)
0x20(f)
0x21(g)
0x30(h)
0x31延伸題目:
sprintf
函式),予以精簡並實作最小可執行的版本;0xCAFEBABE
為 magic number,舉出在真實世界中程式的實際作用 (提示: 如 malloc)