字节数学计算

Byte Math Calculation

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

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

您收到的值与什么值无关,假设是 25,

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

一个位可以是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