gpt4 book ai didi

java - 困难的公式

转载 作者:行者123 更新时间:2023-11-30 10:58:59 25 4
gpt4 key购买 nike

我不熟悉字节和位,而且我的数学也不是很好。我有点了解按位运算符,但我不知道如何用 2 个变量求解数学方程式/公式。我不确定这是问这个问题的合适地方,但无论如何。

我有这样一个公式:

(Adr_MSB & 0x3F) << (8 + Adr_LSB)

现在我想要的是我会得到一个整数(例如 33)并且代码会将其转换为 Adr_MSB 和 Adr_LSB(它们是字节)。它应该工作到 128(好吧,我猜它会是 127)。

我知道这个问题可能听起来很愚蠢之类的,但我只是没有足够的数学知识来解决这个问题。

感谢所有帮助。

编辑:通过实验我发现,Adr_MSB 是一个乘数(例如,如果它是 10,则结果比它是 1 时大 10 倍)。

最佳答案

据我了解

  • (Adr_MSB & 0x3F)的一部分采用了 Adr_MSB 的最后六位并返回相应的整数。
    • 例如:125 (1111101) 将返回 61 (111101)
    • 注意:此步骤将删除除最后 6 位以外的所有位,这些位将丢失。因此无损反函数是不可能的。
  • (8 + Adr_LSB)只需将 8 添加到 Adr_LSB .
  • <<是有点聪明的左移运算符。
    • 例如。 61 << 3 = 488 .由于 61 是 111101,向右添加三个零(左移三次)将得到 111101000,即 488。

表达式的有效逆 (Adr_MSB & 0x3F) << (8 + Adr_LSB)应用于给定号码 x

  1. x中取出前六位并将其转换为 int。这将是 Adr_MSB .
  2. 计算剩余的位。从这个计数中减去 8,它将是 Adr_LSB .

关于java - 困难的公式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32054713/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com