huang-me
>embedded_master
5-6行
分別利用 bitwise operation 取得 Exponential, Mantissa
7-10行
則處理 0、INF 等例外情況
13-17行
把輸入的數字除以 256 並且加到原本的 x 中以達到 round 的效果
19-20行
最後只取 y 的前面 16 個 bit
do {...} while(0)
macro
do {...} while(0)
而是直接使用 {}
將內容包起來就可能造成程式沒有辦法 compile,如下:{}; else ...
不過大掛號後面不應該有 ';'
因此會有 compilation error ,此時如果把 ';'
拿掉就可以順利執行,不過這樣的程式碼不直覺,所以我們選擇用 do {...} while(0)
#define cons(x, y) (struct llist[]){{y, x}}
此題一開始就使用到了 compund literal,在 define 中將 struct 的 val,next 都設定好
y assign 給 val
x 則 assign 給 next
從 head 開始逐一走訪,如果 current->next->val 大於想要插入的值則把新的 node 插入在 current & current->next 的中間。
利用前面定義好的 sorted_insert 一一將 node 插入到 sorted 中。
一開始先設定 N 為 list 的長度,並且計算 ,這個數字所有數字中 most significant bit 是哪一個 bit。
假設:n = 3 計算後得 = 2
bit 2 | bit 1 | bit 0 | |
---|---|---|---|
1 | 0 | 0 | 1 |
2 | 0 | 1 | 0 |
3 | 0 | 1 | 1 |
全部出現次數 | 0 | 2 | 2 |
在 duplicate number 的 set bit 的 bit 出現 1 的次數總和一定會變得比原本應該出現的次數多,因此我們一樣只需要跟從 1 ~ n-1 比較,只要出現的次數比應該出現的次數多,就代表這個 bit 在 duplicate number 裡面必定是 set bit。