谜题

walfud 2011-11-29 04:56:27

Compute parity of word with a multiply

The following method computes the parity of the 32-bit value in only 8 operations using a multiply.
unsigned int v; // 32-bit word
v ^= v >> 1;
v ^= v >> 2;
v = (v & 0x11111111U) * 0x11111111U;
return (v >> 28) & 1;


求解.
...全文
100 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
walfud 2011-11-30
  • 打赏
  • 举报
回复
站等...
柯本 2011-11-29
  • 打赏
  • 举报
回复
这个是算法的一部分,具体的算法我没做研究
walfud 2011-11-29
  • 打赏
  • 举报
回复
第一步 v^= v >> 1; 是什么作用?
柯本 2011-11-29
  • 打赏
  • 举报
回复
还要讲解什么,程序运行步骤已很清楚了啊
这个就是求v奇偶性的一个方法
walfud 2011-11-29
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 keiy 的回复:]

下面的方法是只用8个操作用乘法运算计算32位值的奇偶性。
unsigned int v; //一个32位的无符号整形
v ^= v >> 1; // v右移一位,并与v异或,结果赋给v
v ^= v >> 2; // v右移三位,并与v异或,结果赋给v
v = (v & 0x11111111U) * 0x11111111U; //v 与 0x111……
[/Quote]

兄弟这我知道, 能讲解一下么?
柯本 2011-11-29
  • 打赏
  • 举报
回复
下面的方法是只用8个操作用乘法运算计算32位值的奇偶性。
unsigned int v; //一个32位的无符号整形
v ^= v >> 1; // v右移一位,并与v异或,结果赋给v
v ^= v >> 2; // v右移三位,并与v异或,结果赋给v
v = (v & 0x11111111U) * 0x11111111U; //v 与 0x11111111然后乘0x11111111
return (v >> 28) & 1; //v右移28位,并与1(取最低位)
shun_qizi_ran 2011-11-29
  • 打赏
  • 举报
回复
判断奇偶性?
wzl9030 2011-11-29
  • 打赏
  • 举报
回复
看不懂英文

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧