算法-算法:8位二进制数高低位交换
data=(data<<4)|(data>>4);
data=((data<<2)&0xcc)|((data>>2)&0x33);
data=((data<<1)&0xaa)|((data>>1)&0x55);
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
data=(data<<4)|(data>>4);
data=((data<<2)&0xcc)|((data>>2)&0x33);
data=((data<<1)&0xaa)|((data>>1)&0x55);
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(1)
第一行是用来交换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