为什么奇偶校验标志为 1 而个数为奇数
Why parity flag is 1 while number of ones is odd
执行以下两条指令后:
MOV BX, 0FD51H
DEC BX
我得到奇偶校验标志 = 1(表示偶数个)
但是,递减后的值的二进制表示为:
1111 1101 0101 0000
它有9个(即奇数个)。
此外,执行 NEG BX
之后会导致 PF = 0。但是,2 的补码是:
0000 0010 1011 0000
有偶数个。所以我希望 PF = 1.
来自英特尔手册(第 3.4.3.1 节 状态标志):
Parity flag — Set if the least-significant byte of the result contains an even number of 1 bits;
cleared otherwise.
DEC BX
之后的最低有效字节为50h(即1010000b),其中1的个数为偶数。所以你会得到 PF=1.
同理,在NEG
之后,最低有效字节为B0h(10110000b),其个数为奇数。所以你得到 PF=0.
执行以下两条指令后:
MOV BX, 0FD51H
DEC BX
我得到奇偶校验标志 = 1(表示偶数个)
但是,递减后的值的二进制表示为:
1111 1101 0101 0000
它有9个(即奇数个)。
此外,执行 NEG BX
之后会导致 PF = 0。但是,2 的补码是:
0000 0010 1011 0000
有偶数个。所以我希望 PF = 1.
来自英特尔手册(第 3.4.3.1 节 状态标志):
Parity flag — Set if the least-significant byte of the result contains an even number of 1 bits; cleared otherwise.
DEC BX
之后的最低有效字节为50h(即1010000b),其中1的个数为偶数。所以你会得到 PF=1.
同理,在NEG
之后,最低有效字节为B0h(10110000b),其个数为奇数。所以你得到 PF=0.