作者 | 主题 |
---|---|
yanxiao 版主 经验值:26142 发帖数:11973 精华帖:43 |
楼主 2022-06-16 20:54:05
主题:多字节奇偶性判断方法(针对字节中1的个数) 多字节的奇偶性,是指多个字节中,BIT位为1的个数的奇偶性。 字节的奇偶性,在Smart中没有直接可用的状态位,无法直接作出判断。 当然,最原始的方法,就是按位一个一个地数,这个效率显然不可接受。 先看XOR异域运算的一个特征,A、B、C均为位变量: 假如:C=A XOR B 那么,A、B两个位组合的奇偶性,与C的奇偶性相同。 因此,可以使用XOR运算,把N个字节的奇偶性,浓缩到 1个字节中。 再对1个字节的8个BIT,一个一个地数1的个数,相对来说,效率提高不少。 |
yanxiao 版主 经验值:26142 发帖数:11973 精华帖:43 |
2楼 2022-06-16 23:54:30
主题:回复:多字节奇偶性判断方法(针对字节中1的个数) 异或运算,用来多字节的奇偶性浓缩到单字节中。 |
winter938 至圣 经验值:10682 发帖数:1561 精华帖:33 |
5楼 2022-06-17 22:09:19
主题:回复:多字节奇偶性判断方法(针对字节中1的个数) 若干个位的异或⊕运算结果在任意交换位的次序后运算结果仍然保持不变。 A⊕B=B⊕A=!A*B+!B*A A⊕B⊕C=A⊕C⊕B=C⊕A⊕B=B⊕A⊕C=B⊕C⊕A=C⊕B⊕A 因此多字节的所有位奇偶性的判断可以逐个字节进行异或运算,然后对结果字节的8个位再进行异或运算,得到最终结果
工控爱好者
|
yanxiao 版主 经验值:26142 发帖数:11973 精华帖:43 |
12楼 2022-07-05 23:20:00
主题:回复:多字节奇偶性判断方法(针对字节中1的个数) 最初想法来自另一热贴:80工位开关控制同一个灯。 不讲那个贴子的真正用途。 重新假设一个控制要求:有80个工位,每个工位上有一个双位开关,扳动此开关,可以控制共同的一个灯的亮灭,任一开关变位(扳动变换状态),导致灯的状态翻转。 一个一个开关进行判断,当然是可以的,但效率显然是最低的。 把80个开关状态整理进10个字节中,每一位代表一个开关状态。 不难发现,变化其中一位,实际上会导致10个字节的奇偶性发生变化。 所以,只要检测10个字节的奇偶性,就可以控制灯的状态是否翻转。 |