算法-算法:8位二进制数高低位交换

发布于 2017-07-14 12:06:13 字数 176 浏览 1130 评论 1

data=(data<<4)|(data>>4);
data=((data<<2)&0xcc)|((data>>2)&0x33);
data=((data<<1)&0xaa)|((data>>1)&0x55);

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

灵芸 2017-10-03 16:50:11

第一行是用来交换data的高低字节的,以你的例子来说
data=0101 1001 左移4位后得 1001 0000 右移4位后得 0000 0101 进行位或操作,可以认为是相加 得0101 1001 高低字节交换了
第二行是在每个字节中交换高低位的 注意位与操作
第三行是更细的交换两个相阾位的操作 把每一步操作的结果写出来也就知道是怎么回事了,注意掩码的使用,也就是&符号之后的部分,位与操作常用于在一个二进制串中取出某些位,如0xaa =1010 1010 与左操作数进行位与 取出左操作数中右操作数中当然位为1的位,data左移一位后是 1011 0010 与0xaa&后成了1010 0010 data右移一位后得 0010 1100 与0x55 &后得 0000 0100 再相加就成了 1010 1010

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文