sysprog2020
目的: 檢驗學員對 浮點數運算, C 語言前置處理器應用篇, C 語言程式設計技巧 的認知
1
bfloat16 浮點數格式由 Google 公司發展,最初用於該公司第三代 Tensor 處理單元 (Cloud TPU)。bfloat16 的主要想法是提供 16 位元浮點數格式,其動態範圍與標準 IEEE 754 的 FP32 (Single-precision floating-point format) 相同,但精度較低,相當於指數區和 FP32 保持相同的 8 位元,並將 FP32 的 fraction 區域縮減到 7 位元。
BFloat16 的範例
下列是個轉換程式:
對應的測試程式:
參考執行結果:
請補完程式碼。
作答區
BB1 = ?
(a)
0x7f800000(b)
0x007fffff(c)
0xff800000(d)
0x0000ff80(e)
0xffff0000(f)
0x0000ffffBB2 = ?
(a)
0x7f800000(b)
0x007fffff(c)
0xff800000(d)
0x0000ff80(e)
0xffff0000(f)
0x0000ffff參考資料:
延伸題目:
2
考慮以下 ring buffer 的實作:
其測試程式如下:
請補完程式碼,使得測試程式得以正確執行。
作答區
RB1 = ?
(a)
1(b)
0RB2 = ?
(a)
1(b)
0延伸題目:
do { ... } while (0)
使用的考量
確認詳閱 C 語言前置處理器應用篇 和 C 語言程式設計技巧
3
考慮到以下靜態初始化的 singly-linked list 實作:
其執行結果為:
這裡的
9547
不是周星馳電影裡面的密碼,而是指小行星 9547
請補完程式碼,使程式碼和執行結果相匹配。
作答區
A = ?
(a)
9(b)
5(c)
4(d)
7B = ?
(a)
9(b)
5(c)
4(d)
7C = ?
(a)
9(b)
5(c)
4(d)
7D = ?
(a)
9(b)
5(c)
4(d)
7SS1 = ?
(a)
*head = node->next
(b)
*head = node
(c)
node = *head
(d)
node->next = *head
SS2 = ?
(a)
*head = node->next
(b)
*head = node
(c)
node = *head
(d)
node->next = *head
延伸題目:
n
的 list* l
,分析 sort(l)
的時間複雜度,得到 的結果4
LeetCode 287. Find the Duplicate Number 給定一個整數序列,其中會有一個數值重複,請找出。
已知條件:
考慮以下程式碼是可能的解法:
CCC = ?
(a)
c1 == c2
(b)
c1 < c2
(c)
c1 > c2
(d)
c1 & c2
(e)
c1 ^ c2
延伸題目: