contributed by < nelsonlai1 > 測驗 1 #include <stdio.h> #include <stdlib.h> double divop(double orig, int slots) { if (slots == 1 || orig == 0) return orig; int od = slots & 1;
11/5/2020contributed by < nelsonlai1 > 測驗 1 浮點數結構分為 sign, exponent, fraction 三個部分,而浮點數的值為 $2^{(exponent-127)} \times (1 + fraction)$,且 sign 決定正負號,其中 fraction 的計算是最左邊的 bit 為 $2^{-1}$,第 2 個為 $2^{-2}$,以此類推。 float fp32tobf16(float x) { float y = x; int *py = (int *) &y; unsigned int exp, man;
10/29/2020contributed by < nelsonlai1 > 測驗 1 int hammingDistance(int x, int y) { return __builtin_popcount(x OP y); } 這題要算兩數間的 Hamming distance,而 XOR 後在原本相異的位元會變成 1,再用 popcount 就能算出 Hamming distance。 延伸問題
10/13/2020contributed by < nelsonlai1 > 測驗 1 int asr_i(signed int m, unsigned int n) { const int logical = (((int) -1) OP1) > 0; unsigned int fixu = -(logical & (OP2)); int fix = *(int *) &fixu; return (m >> n) | (fix ^ (fix >> n)); }
10/6/2020or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up