C语言实现 一个数二进制位模式从左到右翻转 reverse_bit
来源:互联网 发布:天下3妖孽男捏脸数据 编辑:程序博客网 时间:2024/06/04 23:35
首先要知道这个数的二进制转化,要实现从左到右的翻转,要么让二进制数从后往前移位,要么就是从后往前读每一位都乘以2^(32-i),最后相加就行了。
举例说明吧:
如在32位机器上15这个值包含下列各位:
00000000000000000000000000001111
翻转后:(4026531840)
11110000000000000000000000000000
标准函数:
unsigned int reverse_bit(unsigned int value);
这个函数的返回值为value的二进制位模式从左到右翻转后的值。
#include<stdio.h>unsigned int reverse_bit(unsigned int value){int i = 0;int bit = 0;int sum = 0;for(i = 0;i < 32;i++) //这里从0开始{sum = sum << 1; //sum左移1位bit = value & 1; //求出value的最后一位sum = sum | bit;<span style="white-space:pre"></span> //sum | bit得到左移后的数即为将value最后一位数往前移动一位。.
value = value >> 1;<span style="white-space:pre"></span> //value右移一位,即最后一位被拿走了,放在sum中.}return sum;}int main(){printf("%u\n",reverse_bit(5));return 0;}结果如下:
第二种算法:这里用到了幂函数pow
#include<stdio.h>#include<math.h>unsigned int reverse_bit(unsigned int value){int i = 0;int bit = 0;int sum = 0;for(i = 1;i <= 32;i++) //这里从1开始{bit = value & 1;<span style="white-space:pre"></span>//取最后一位sum += bit * pow(2,32-i); //将最后一位前置在最前边,然后依次往前放,最后相加。value = value >> 1;}return sum;}int main(){printf("%u\n",reverse_bit(5));return 0;}结果是一样的:
注意事项:
1.sum必须要初始化,除了静态变量,全局变量等可以自动初始化,否则会自动初始化随机值。
2.注意两种算法循环的起始点和终止点。比如:第一种方法中,sum左移如果在sum移位之前,那么得到的将不是我们想要的值。
0 0
- C语言实现 一个数二进制位模式从左到右翻转 reverse_bit
- C语言实现一个数的二进制位模式从左到右翻转后的值
- 【C语言】求一个数的二进制位模式从左到右翻转后对应的十进制值。
- 用c语言实现 一个数二进制位从左到右的翻转
- 【C语言】编写函数 unsigned int reverse_bit(unsigned int value); 这个函数的返回值吧value的二进制位模式从左到右翻转后的值。
- C语言 编写函数 unsigned int reverse_bit(unsigned int value); 这个函数的返回值value的二进制位模式从左到右翻转后的值。
- 俩种方法实现一个数的二进制位模式从左到右翻转后的值
- 【C语言】2.编写函数 unsigned int reverse_bit(unsigned int value); 这个函数的返回 值value的二进制位模式从左到右翻转后的值。 如在32位机器上2
- 【C】unsigned int reverse_bit(unsigned int value); 这个函数的返回值value的二进制位模式从左到右翻转后的值
- C语言:编写函数将一个整数的二进制位模式从左到右翻转后的值输出
- 二进制位模式从左到右翻转
- 将一个数的二进制位模式从左到右翻转并输出
- C语言 函数返回 值value的二进制位模式从左到右翻转后的值。
- 编写函数 unsigned int reverse_bit(unsigned int value); 这个函数的返回值把value的二进制位模式从左到右翻转后的值。
- unsigned int reverse_bit(unsigned int value); 这个函数的返回值吧value的二进制位模式从左到右翻转后的值
- 编写函数 unsigned int reverse_bit(unsigned int value); 这个函数的返回值吧value的二进制位模式从左到右翻转后的值。
- 编写函数: unsigned int reverse_bit(unsigned int value); 这个函数的返回 值value的二进制位模式从左到右翻转后的值。
- 编写函数: unsigned int reverse_bit(unsigned int value); 这个函数的返回 值value的二进制位模式从左到右翻转后的值
- 研究生(包括博士)选题与开题报告撰写
- GDAL:函数GDALDataset::RasterIO说明
- oracle中Blob和Clob类型的区别
- struts2 注解例子
- 等待的真相
- C语言实现 一个数二进制位模式从左到右翻转 reverse_bit
- ******************** 宏定义的调试 ********************
- SVN team 合并
- EditText控件的使用
- tcp 三次握手
- 杀毒软件和防火墙的区别
- android中ListView异步加载图片时的图片错位问题解决方案
- Animation & Property Animation 使用
- Does the C standard guarantee buffers are not touched past their null terminator?