[问题] 新手想请教一行程式码

楼主: 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