#include <stdlib.h> #include <stdio.h> #include <math.h> unsigned int reserve_bit(unsigned int num)//采用移位的方法使一个数的二进制位翻转后返回 { unsigned int ret = 0; int bit = 0; int i = 0; for (i = 0; i < 32; i++) { ret <<= 1; bit = num & 1; ret = bit | ret; num = num / 2; } //1000 0000 0000 0000 0000 0000 0000 0000 return ret; } unsigned int reserve1_bit(unsigned int num)//计算的方法 { int bit=0; unsigned int ret = 0; int i = 0; for (; i < 32; i++) { bit = num & 1; ret += bit*pow(2, 31 - i); num /= 2; } return ret; } int main() { unsigned int num = 0; unsigned int ret = 0; unsigned int ret1 = 0; scanf_s("%d", &num); ret = reserve_bit(num); ret1 = reserve1_bit(num); printf("ret = %u\n", ret); printf("ret1 = %u\n", ret1); system("pause"); return 0; }
关于把一个无符号数的二进制位翻转的两种实现方法
原创
©著作权归作者所有:来自51CTO博客作者想去猫本的原创作品,请联系作者获取转载授权,否则将追究法律责任
下一篇:初学C++遇到的引用头文件问题
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
二进制位翻转:
思路:利用按位与(&)求得二进制每一位的数字,然后再与ret 进行 按位或(|) 运算。 ret左移,value
#include i++ 位或 -
150,颠倒二进制位
颠倒给定的 32 位无符号整数的二进制位。示例:输入: 43261596输出: 964176192解释: 4
数组 i++ 无符号整数 进制 旋转数组