逆置一个数的二进制序列
来源:互联网 发布:animage软件 编辑:程序博客网 时间:2024/05/16 04:45
在这里我给大家提供了两种方法来实现这个问题
方法一:主要思想是通过按位与&右移将二进制的每一位放在一个数组中,然后输出就ok了
void reverse_bit(unsigned int data) //逆置一个数的二进制序列(法一){int arr[32];int i = 0;while (i<32){if (data & 1){arr[i] = 1;i++;}else {arr[i] = 0;i++;}data = data >> 1;}for (i = 0; i < 32; i++){printf("%d ",arr[i]);}printf("\n");}int main(){int x = 0;printf("please input:\n");scanf("%d", &x);reverse_bit(x);return 0;}
方法二:这个方法比起上一种方法更巧妙,如果面试中凭借上一种方法能进入百度,这个可以让你进入谷歌。这种方法思考起来相比比较麻烦,但也不难。首先按位与(&),从最高位开始,如果结果不为零,就将按位或(|),因为i与(31-i)是对称的,也就起到了逆置效果。
比如: data的二进制:0010 0000 0000 0000 0000 0000 0000 0000
当i=0时: & 1000 0000 0000 0000 0000 0000 0000 0000 与是有0为0,这时结果为零,
当i=2时 0010 0000 0000 0000 0000 0000 0000 0000 这时结果是0010 0000 0000 。。主要是确定i=2;
所以执行按位或 0000 0000 0000 0000 0000 0000 0000 0000
(1<<i). 0000 0000 0000 0000 0000 0000 0000 0100
或为有1为1,结果为:0000 0000 0000 0000 0000 0000 0000 0100
结束,比较第一列和最后一列,是不是完成了逆置?
unsigned int reverse_bit(unsigned int data) //逆置二进制序列(法二){unsigned int rdata = 0;int i = 0;while (i < 32){if (data&(1 << (31 - i))) //结果不为零{rdata |= (1<<i);}i++;}return rdata;}int main(){int x = 0;int ret = 0;printf("please input:\n");scanf("%d",&x);ret = reverse_bit(x);printf("%u",ret);return 0;}
有不懂得的地方,欢迎留言
0 0
- 逆置一个数的二进制序列
- 一个整型数的二进制序列
- 求一个数的二进制序列中1的个数
- 一个数二进制序列中所有的偶数位和奇数位,分别输出二进制序列。
- 输出一个数的二进制数的奇数序列和偶数序列(三种方法)
- 【c语言】将一个数的二进制序列逆序,然后输出逆序之后的二进制序,所对应的数
- 获取一个数二进制序列中所有的偶数位和奇数位,分别输出二进制序列。
- 获取一个数二进制序列中所有的偶数位和奇数位,分别输出二进制序列
- 【C语言】获取一个数二进制序列中所有的偶数位和奇数位,分别输出二进制序列
- 获取一个数二进制序列中所有的偶数位和奇数位,分别输出二进制序列
- c语言:获取一个数二进制序列中所有的偶数位和奇数位,分别输出二进制序列。
- 获取一个数二进制序列中所有的偶数位和奇数位,分别输出二进制序列。
- 获取一个数二进制序列中所有的偶数位和奇数位,分别输出二进制序列。
- 获取一个数二进制序列中所有的偶数位和奇数位,分别输出二进制序列
- 获取一个数二进制序列中所有的偶数位和奇数位,分别输出二进制序列。
- C语言 获取一个数二进制序列中所有的偶数位和奇数位,分别输出二进制序列
- 获取一个数二进制序列中所有的偶数位和奇数位,分别输出二进制序列。
- 获取一个数二进制序列中所有的偶数位和奇数位,分别输出二进制序列。
- IntelliJ Idea 常用快捷键列表
- Android 强引用,弱引用,软引用,虚引用
- 简单动画
- 38.jquery.page.js实现分页技巧
- 盐值
- 逆置一个数的二进制序列
- thinkphp整合系列之微信公众号支付
- 计算机专业英语--词汇备忘
- 面试题一--java基础部分
- 折腾二维数组
- cell 高度自适应
- 使用Android SwipeRefreshLayout了解Android的嵌套滑动机制
- U-Boot学习笔记(三):顶层Makefile分析
- 关于git的使用