1、如果数据位中包含偶数个1 校验位(P)就会置1,如果数据位中包含奇数个1,校验位(P)就会置0。数据位中1的个数加上校验位(P)总为奇数,这就是奇校验。
例:
0010_0001, P = 1 ===>Reslut=1_0010_0001,在Reslut中所有“1”加起为奇数
0000_0001, P = 0 ===>Reslut=0_0000_0001,在Reslut中所有“1”加起为奇数
2、如果数据位中包含偶数个1 校验位(P)就会置0,如果数据位中包含奇数个1,校验位(P)就会置1。数据位中1的个数加上校验位(P)总为偶数,这就是偶校验。
例:
0010_0001, P = 0 ===>Reslut=0_0010_0001,在Reslut中所有“1”加起为偶数
0000_0001, P = 1 ===>Reslut=1_0000_0001,在Reslut中所有“1”加起为偶数
3、如何求一组数据中的奇偶校验位(P)?
例偶校验:
(1)、a[3:0] = 0001;
a[0]与a[1]异或得1,1在与a[2]异或得1,1在与a[3]异或得1,那么P=1; 即P = a[0]^a[1]^a[2]^[3];Verilog 中可以这样写,p=^a; why?
(2)、b[3:0] = 0101;
b[0]与b[1]异或得1,1在与b[2]异或得0,0在与b[3]异或得0,那么P=0;同理p=^b;
好奇怪啊,书上说异或属于双目运算符,p=^a,那a跟谁异或呢?
摘自一位网友的解释“与、或、非以及异或等既可以作为位运算符,也可以作为一元约减运算符。作为位运算符时,除了“非”以外都是双目运算符,需要两个操作数;作为一元约减运算符时是