[問題] 新手想請教一行程式碼

作者: wayne78117 (KID1412)   2015-03-10 16:15:28
我在看一段程式碼
它是這樣寫的
*buf_p++ = (((i & 127) << 1) + 1) << 8 | (( i & 127) << 1);
我看不懂他這段程式碼的意思
想瞭解他的用意是幹嘛的
謝謝
附上這段程式碼的上下行
http://codepad.org/2R7PCqik
作者: leslieha (懂的付出才會幸福)   2015-03-10 17:20:00
我是先看成 *buf_p++ = (((j)+1) << 8) | (j);
作者: springman (司布林)   2015-03-10 17:20:00
*buf_p = ((i%128)*2+1)*256+(i%128)*2 + 1;只是我也不知它要做什麼。
作者: leslieha (懂的付出才會幸福)   2015-03-10 17:24:00
若buf_p是unsigned short *, 我猜是給初始值/測試值語意 可能只有撰寫者才知道 或要看上下幾行code
作者: Killercat (殺人貓™)   2015-03-10 18:07:00
這個只是把i處理一下的結果丟進16bit的上下兩組位元很常見的一個數組切成兩半來存資料的方法而已
作者: LPH66 (-6.2598534e+18f)   2015-03-10 21:03:00
這整個迴圈是個老式的 partial loop unrolling若機器是 little-endian 且 ppduBuf 跟 hdrBuf 原先都是字元陣列的話, 迴圈執行完這個字元陣列會由 0 1 2 ... 255重覆填入, 看起來像是在設定什麼初始值的樣子不直接迴圈填字元的原因可能跟機器結構有關一次填 16-bit 可能會比兩次填 8-bit 來的快
作者: CaptainH (Cannon)   2015-03-11 08:50:00
樓上專業

Links booklink

Contact Us: admin [ a t ] ucptt.com