数学&位运算

发布时间 2023-04-22 14:15:20作者: 调蓝师
title: 数学&位运算

1、只出现一次的数字

知识点:

1)任何数字和它本身异或,结果是0

2)任何数字和0异或,结果是它自己

3)异或满足交换律和结合律

int singleNumber(int* nums, int numsSize){
    int i, result=0;
    for(i=0; i<numsSize; ++i)
    {
        result ^= nums[i];
    }
    return result;
}

6、位1的个数

int hammingWeight(uint32_t n) {
    int count_1 = 0;
    for(; n!= 0; n>>=1)
    {
        if((n&1) != 0){
            ++count_1;
        }
    }
    return count_1;
}