繁体   English   中英

函数以十进制反转十六进制数的位并返回反转位的十六进制值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM