位运算总结1. 二进制的逆置
2015-12-04 10:17
239 查看
# include <stdio.h> /*** 对参数num的二进制进行逆置 ***/ unsigned int Reverse_bits(unsigned int num) { /* tmp用来保存逆置的结果 */ unsigned int tmp = 0; /* int有4个字节,32位,因此循环32次以取到num的每一位 */ for(int i=0; i<32; i++) { /* *** (num>>i) & 1: 取到num最右边的值,循环移动32次,得到num的每一位 *** *** ((num>>i) & 1) << (32-i-0):得到最右边的num,即需要移动到右数的 第32位,需移动31次,依此类推,移动次数为(32-i-0) *** *** 利用 |= 将逆置结果保存于tmp中 *** */ tmp |= ((num>>i) & 1) << (32-i-0); } return tmp; } int main() { printf("%08x\n%08x\n", 25, Reverse_bits(25)); printf("%08x\n%08x\n", 0, Reverse_bits(0)); printf("%08x\n%08x\n", 1, Reverse_bits(1)); printf("%08x\n%08x\n", -1, Reverse_bits(-1)); printf("%08x\n%08x\n", 2, Reverse_bits(2)); return 0; } /* 运行结果: 00000019 30000001 00000000 00000000 00000001 00000001 ffffffff ffffffff 00000002 80000000 */
相关文章推荐
- 虚拟机上centos7静态IP的配置
- Java 多态总结
- 在内部网络为edX配置视频服务
- C++11的多线程
- xcode简介及安装
- 员工费用报销冲减员工借款怎么做账
- HDU 1028 整数拆分 (母函数_模板|| 背包)
- CMake 中的字符串操作
- #ifndef/#define/#endif使用详解
- 知其然亦知其所以然-NSOperation并发编程
- 24. (ora-01410无效的rowid)临时表 on commit delete rows 与 on commit preserve rows 的区别
- 【资料】wod书籍
- 贪心算法----背包问题
- win命令行打包文件(系统自带 渗透必备)
- 数值 ELO算法教程
- 动画特效大全
- Open edx Fullstack安装及安装错误整理
- 九度题目1283:第一个只出现一次的字符
- Eclipse Plugins' links
- #学习笔记#(5)表格奇偶行颜色样式JavaScript+CSS+HTML