将偶数的二进制反转
2016-07-03 09:18
120 查看
例如6的二进制为110,反转后就是011(倒过来了)
int n = 6;
int bit;
intrn; // 保存反转得到的结果
while(n)
{
bit = n % 2; // 相当于取得是6的最低位0,以2取余就是取二进制的低位
rn = bit + rn*2;
// 二进制110,算十进制是1x22 + 1x21 + 1x20,rn*2
// rn所得的,就是每次循环取到的逆转的二进制位(原来的低位,如今的高位)再加上上一次所得结果(原来的高位,如今的低位)
n = n/2; // 除以2,也就相当于右移一位,>>1
}
还有另外一种写法:
while(k)
{
rn <<= 1;
rn |= (k & 1);
k >>= 1;
}
k = rn;
输入奇数程序也不会出错,不过奇数的二进制反转了跟没反转都一个样,分析一下奇数就可以发现奇数的二进制一般都是对称的,所以,对于对称的奇数来说,反转了也没啥区别。
转载于:https://my.oschina.net/yuyounglife/blog/704738
相关文章推荐
- 输入n个数,请将其中的偶数的二进制反转。
- 将偶数的二进制反转
- 将偶数二进制反转
- eg:输入1 6 5 其中6是偶数,二进制表示为110,反转后为011,代表3,所以最终输出1 3 5.
- 今天的计算机课上,老师给同学们出了一道题: 输入n个数,请将其中的偶数的二进制反转。 eg:输入1 6 5 其中6是偶数,二进制表示为110,反转后为011,代表3,所以最终输出1 3 5. 小贱君最近脑子不怎么好使,想了半天也没想出来如何做,最后他向你寻求帮助了,帮帮可怜的小贱君吧!
- 偶数二进制位反转(JAVA)
- [置顶] 【C语言】 求一个数的二进制反转后的值
- c语言:获取一个数二进制序列中所有的偶数位和奇数位,分别输出二进制序列。
- 获取一个数二进制序列中所有的偶数位和奇数位,分别输出二进制序列。
- 一个数二进制序列中所有的偶数位和奇数位,分别输出二进制序列。
- 获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列
- java 16进制转化为二进制 二进制在反转后再得到16进制
- 如何获取一个数二进制序列中的偶数位和奇数位
- 获取二进制序列的所有的偶数位和奇数位,二进制输出序列---C语言
- C语言输出一个数二进制序列的奇数位和偶数位
- 获取一个数二进制序列中所有的偶数位和奇数位,分别输出二进制序列。
- 使用宏将一个数二进制中的奇数位和偶数为进行交换
- 获取一个数二进制序列中所有的偶数位和奇数位
- 获取一个整数二进制序列中所有的偶数位和奇数位,分别打印出二进制序列
- 10进制的二进制反转输出