字节数学计算

时间:2021-07-26 17:56:00

标签: math byte

假设我们有一个等于的设置字节,并且您知道 b1-b4 始终为 1 或 0

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

你收到一个值无关紧要,我们只说 25,

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

1 个答案:

答案 0 :(得分:1)

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

例如,对于 25:
是 16 <= 25? :是的,因此 b4 = 1 从 25 中减去 16。
是 8 <= (25-16) :是的,因此 b3 = 1 从 9 中减去 8。
是 2 <= (25-16-8) :否,因此 b2 = 0
是 1 <= (25-16-8) :是的,因此 b1 = 1 从 1 中减去 1。

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

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

相关问题