逆转一个整数的二进制表示问题
来源:互联网 发布:arduino和51单片机 编辑:程序博客网 时间:2024/05/22 11:46
写一个函数逆转整数的二进制表示 unsigned ReverseBit(unsigned x);
unsigned x = RevBit(0xf0ec9999);
x应该为 0x9999370f。
0xf0ec9999 == 11110000111011001001100110011001(二进制)
第一行代码为奇偶位相互交换;第二行为以两位为一单元,奇偶单元进行交换;第三行为以四位为一单元,奇偶单元进行交换;第四行为以八位为一单元,奇偶单元进行交换;最后一行为以十六位为一单元,奇偶单元进行交换。至此,32位反转完成,算法结束。
unsigned x = RevBit(0xf0ec9999);
x应该为 0x9999370f。
0xf0ec9999 == 11110000111011001001100110011001(二进制)
0x9999370f == 10011001100110010011011100001111(二进制)
解法一直接做:
解法二:
思路:相邻两位互调位置(即一位换一位),再相邻的两位换两位,在相邻的四位与四位互调位置,再八位与八位互调位置,最后前十六位和后十六位互换位置,完成32位整数逆转。
第一行代码为奇偶位相互交换;第二行为以两位为一单元,奇偶单元进行交换;第三行为以四位为一单元,奇偶单元进行交换;第四行为以八位为一单元,奇偶单元进行交换;最后一行为以十六位为一单元,奇偶单元进行交换。至此,32位反转完成,算法结束。
0 0
- 逆转一个整数的二进制表示问题
- 逆转一个整数的二进制表示问题
- 逆转一个整数的二进制表示问题
- 逆转一个整数的二进制表示问题
- 逆转一个整数的二进制表示问题
- 逆转一个整数的二进制表示问题
- 逆转一个整数的二进制表示问题
- 逆转一个整数的二进制表示问题
- 逆转一个整数的二进制表示问题[转]
- 逆转一个整数的二进制表示
- 求逆转一个整数的二进制表示
- 编程之美 2.7 最大公约数 扩展问题之逆转一个整数的二进制表示
- 一个整数的二进制表示中1的个数
- 求一个整数的二进制表示中1的个数
- 求一个32位整数的二进制表示形式
- 寻找一个整数二进制表示中1的个数
- 给定一个整数,求它的二进制表示
- 一个整数N二进制表示中1的个数
- 常用socket函数详解
- 几种并行计算模型的区别(BSP LogP PRAM)
- Android_异常_IllegalStateException(待完善)
- AngularJS的内置过滤器总结
- Android样式的开发:selector篇
- 逆转一个整数的二进制表示问题
- 股市日记(一)
- ffmpeg学习(5)——av_register_all()
- Security "Crypto" provider deprecated in Android N
- Stanford NER Service使用
- Android样式的开发:layer-list篇
- AngularJS控制器
- 用于显示不同数据状态的父View
- 2016.06.13廖雪峰JS__学习笔记(函数部分)__p2