我是字节和位的新手,我在数学方面也不是很好。我有点理解按位运算符,但我不知道如何用2个变量求解数学方程式/公式。我不确定这是问题的适当地方,但无论如何。
我有这样的公式:
(Adr_MSB & 0x3F) << (8 + Adr_LSB)
现在我想要的是我会得到一个整数(例如33),代码会将其转换为Adr_MSB和Adr_LSB(它们是字节)。 它应该可以达到128(好吧我猜它会是127)。
我知道这个问题可能听起来很愚蠢,但我只是不知道足够的数学来解决这个问题。
感谢您的帮助。
编辑:通过实验我发现,Adr_MSB是一个乘数(例如,如果它的结果是10倍,则比它的1倍)。
答案 0 :(得分:1)
据我理解
(Adr_MSB & 0x3F)
部分取Adr_MSB
的最后六位并返回相应的整数。
(8 + Adr_LSB)
只增加8 Adr_LSB
。 <<
是一个有点明智的左移算子。
61 << 3 = 488
。由于61是111101,向右添加三个零(左移三次)将得到111101000,即488。要应用于给定数字(Adr_MSB & 0x3F) << (8 + Adr_LSB)
x
的有效反转
x
取前六位并将其转换为int。这将是Adr_MSB
。Adr_LSB
。答案 1 :(得分:0)
以下是否代表您所寻找的内容?
((Adr_MSB&amp; 0x3F)&lt;&lt; 8)| Adr_LSB
答案 2 :(得分:0)