1
延續 從 的運算談浮點數,假設 double 為 32-bit 寬度,考慮以下符合 IEEE 754 規範的平方根程式,請補上對應數值,使其得以運作:
作答區
KK1 = ?
(a)
0x1ff00000(b)
0x2ff00000(c)
0x3ff00000(d)
0x4ff00000(e)
0x5ff00000(f)
0x6ff00000(g)
0x7ff00000(h)
0x8ff00000(i)
0x9ff00000(j)
0xaff00000KK2 = ?
(a)
0x1ff00000(b)
0x2ff00000(c)
0x3ff00000(d)
0x4ff00000(e)
0x5ff00000(f)
0x6ff00000(g)
0x7ff00000(h)
0x8ff00000(i)
0x9ff00000(j)
0xaff00000KK3 = ?
(a)
31(b)
63(c)
127(d)
255(e)
511(f)
1023(g)
2047KK4 = ?
(a)
0xffffffff(b)
0xfffffffe(c)
0xfffffffd(d)
0xfffffffc(e)
0xfffffffb(f)
0xfffffffa(g)
0xfffffff9(h)
0xfffffff8KK5 = ?
(a)
40(b)
30(c)
20(d)
10(e)
0(f)
-10(g)
-20Reference:
延伸題目: 解釋上述程式碼何以運作,並且改為 float (單精度) 版本,注意應該用更短的程式碼來實作
2
考慮到下方函式 shift_right_arith
和 shift_right_logical
分別表示算術右移和邏輯右移,請嘗試補完程式碼。可由 sizeof(int) * 8
得知整數型態 int
的位元數 w
,而位移量 k
的有效範圍在 0 到 w - 1
。
作答區
P1 = ?
(a)
1(b)
2(c)
3(d)
-1(e)
-2(f)
-3(g)
0P2 = ?
(a)
1(b)
k(c)
k - w(d)
w + k(e)
w(f)
w - kP3 = ? (為某種 operation)
(a)
^(b)
&(c)
<<(d)
|(e)
>>(f)
+(g)
-P4 = ?
(a)
1(b)
2(c)
3(d)
-1(e)
-2(f)
-3(g)
0P5 = ?
(a)
1(b)
k(c)
k - w(d)
w + k(e)
w(f)
w - kP6 = ? (為某種 operation)
(a)
^(b)
&(c)
<<(d)
|(e)
>>(f)
+(g)
-P7 = ?
(a)
mask(b)
~maskReference:
延伸題目: 在 x86_64 和 Aarch32/Aarch64 找到對應的指令,並說明其作用和限制