[英]Function to reverse the bits of the hex number in decimal and return hex value of the reversed bits
给定十六进制数 0x1234 作为参数传递给函数,我尝试编写将反转数字位并返回反转数字 0x2C48 的函数,我可以解释我试图达到的解决方案。 0x1234 这是将提供给函数的输入十六进制数 0x2C48 将是我想要实现的输出。
4(二进制)==> 0100; (rev_bits)==> 0010 ==>2
3(二进制)==> 0011; (rev_bits)==> 1100 ==> C
2(二进制)==> 0010; (rev_bits)==> 0100 ==>4
1(二进制)==> 0001; (rev_bits)==> 1000 ==>8
有很多方法可以做到这一点。 这是一个使用位移位的方法。
设A
为原始值,例如1100
。
设B
为结果值。
+---+---+---+---+ +---+---+---+---+
| 1 | 1 | 0 | 0 | | 0 | 0 | 0 | 0 |
+---+---+---+---+ +---+---+---+---+
A B
步骤 1:将A
的最低有效位设置为B
。
+---------------------+
| |
^ v
+---+---+---+---+ +---+---+---+---+
| 1 | 1 | 0 | 0 | | 0 | 0 | 0 | 0 |
+---+---+---+---+ +---+---+---+---+
A B
步骤 2:将A
右移一位。 B
左移一位。
+---+---+---+---+ +---+---+---+---+
| 0 | 1 | 1 | 0 | | 0 | 0 | 0 | 0 |
+---+---+---+---+ +---+---+---+---+
A B
再重复3次:
+---+---+---+---+ +---+---+---+---+
| 0 | 0 | 1 | 1 | | 0 | 0 | 0 | 0 |
+---+---+---+---+ +---+---+---+---+
A B
+---+---+---+---+ +---+---+---+---+
| 0 | 0 | 0 | 1 | | 0 | 0 | 0 | 1 |
+---+---+---+---+ +---+---+---+---+
A B
+---+---+---+---+ +---+---+---+---+
| 0 | 0 | 0 | 0 | | 0 | 0 | 1 | 1 |
+---+---+---+---+ +---+---+---+---+
A B
上述算法的实现留给OP。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.