您的位置:首页 > 其它

将偶数的二进制反转

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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐