看板 C_and_CPP 關於我們 聯絡資訊
我在看一段程式碼 它是這樣寫的 *buf_p++ = (((i & 127) << 1) + 1) << 8 | (( i & 127) << 1); 我看不懂他這段程式碼的意思 想瞭解他的用意是幹嘛的 謝謝 附上這段程式碼的上下行 http://codepad.org/2R7PCqik -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.120.31.127 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1425975331.A.D28.html
leslieha: 我是先看成 *buf_p++ = (((j)+1) << 8) | (j); 03/10 17:20
springman: *buf_p = ((i%128)*2+1)*256+(i%128)*2 + 1; 03/10 17:20
springman: 只是我也不知它要做什麼。 03/10 17:21
leslieha: 若buf_p是unsigned short *, 我猜是給初始值/測試值 03/10 17:24
leslieha: 語意 可能只有撰寫者才知道 或要看上下幾行code 03/10 17:25
Killercat: 這個只是把i處理一下的結果丟進16bit的上下兩組位元 03/10 18:07
Killercat: 很常見的一個數組切成兩半來存資料的方法而已 03/10 18:07
※ 編輯: wayne78117 (140.120.31.127), 03/10/2015 20:20:35
LPH66: 這整個迴圈是個老式的 partial loop unrolling 03/10 21:03
LPH66: 若機器是 little-endian 且 ppduBuf 跟 hdrBuf 原先都是 03/10 21:04
LPH66: 字元陣列的話, 迴圈執行完這個字元陣列會由 0 1 2 ... 255 03/10 21:04
LPH66: 重覆填入, 看起來像是在設定什麼初始值的樣子 03/10 21:05
LPH66: 不直接迴圈填字元的原因可能跟機器結構有關 03/10 21:05
LPH66: 一次填 16-bit 可能會比兩次填 8-bit 來的快 03/10 21:06
CaptainH: 樓上專業 03/11 08:50