【问题标题】:Byte Math Calculation字节数学计算
【发布时间】:2021-07-26 17:56:00
【问题描述】:

假设我们有一个等于的设置字节,你知道 b1-b4 总是 1 或 0

b1 + b2*2 + b3*8 + b4*16

您收到的值与什么值无关,比如 25,

您如何确定设置了哪些字节?

【问题讨论】:

  • 先试试更简单的:你能算出b4的值吗?
  • 不,不是真的,我们知道它是 1 或 0,和所有其他人一样。
  • 如果值为 25,那么 b4 可以为 0 吗?尝试使用其他位,看看您是否可以在没有b4 的情况下获得 25。

标签: math byte


【解决方案1】:

位可以是 0 或 1。从最大的数 (16) 开始,如果目标大于或等于目标十进制数,则从目标十进制数中减去。否则什么也不做,将该位设置为 0。

例如,对于 25:
是 16 是 8 是 2 是 1

原来是这样:1101 (b4 b3 b2 b1) 从十进制数转换为二进制数时应用的逻辑完全相同。但是,在您的问题中,b3 乘以 8,而不是 4(为什么?)

这背后的逻辑是什么? 好吧,当您的数字中有 N 时(例如 25 中的 16),我们知道所有低于 N 的其他数字(N/2 N/4 N/8 等)不能相加为 N。它们的总和将为 N - 1.你可以通过简单的计算找到它:calculation

【讨论】:

    猜你喜欢
    • 2013-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-04
    • 2013-01-29
    • 2019-04-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多