数字奇偶性在英文里称为parity,意思是一个数字的bit位中,1的个数是否是奇数,比如说二进制数1010,bit位中有两个1,所以其parity为0,二进制数1011,bit位中有三个1,所以其parity为1。
计算数据奇偶性的方法很多,下面分别介绍几种常用的方法,最后再介绍一下今天看到的新方法,非常有意思。
brute-force
parity是指一个数字bit位中1的个数,那我们就逐位数一数这个数字bit位中1的个数,最后用1的个数对2求余即可得到其parity值。Java代码如下:
public static short countBits(int x){
short numBits = 0;
while(x != 0){
numBits += (x & 1);
x >>>= 1;
}