题目一 unsigned int reverse_bit(unsigned int value); 这个函数的返回值value的二进制位模式从左到右翻转后的值。
如:
在32位机器上25这个值包含下列各位:
00000000000000000000000000011001
翻转后:(2550136832)
10011000000000000000000000000000
程序结果返回:
2550136832
- 分析
首先需要十进制转化为二进制
然后需要将其逆置 - 思路
思路一: 将十进制转化为32位二进制放入数组中,然后逆置数组,再将二进制转化为十进制
缺点: 二进制转十进制时可能会溢出
思路二:将十进制转化为32位二进制, 通过 按位或 (|)操作符,将其对应位数二进制数转化
00000000000000000000000000001111 ->11110000000000000000000000000000 - 实现
第一种:unsigned int reverse_bit(unsigned int value) { int bitArr[32]; int temp; int mut = 0; for (int i = 0; i < 32; i++) { bitArr[i] = value & (1 << i) ? 1 : 0; } for (int i = 0; i < (32 / 2); i++) { temp = bitArr[i]