计算机系统基础(一)位运算

1 获得某位

uint64_t get_bit (uint64_t value, uint64_t k) {
    
     // from right to left
    return (value >> k) & 1;
}

set

注意这里,移位写法value |= (uint64_t)1 << k;,不然,1默认是int型,移到31的时候,超过符号位,会报错。

uint64_t set_bit (uint64_t value, uint64_t k, uint64_t bit) {
    
    
    if (bit == 1) {
    
    
        value |= (uint64_t)1 << k;
    }
    else if (bit == 0) {
    
    
        value &= ~((uint64_t)1 << k);
    }

    return value;
}

猜你喜欢

转载自blog.csdn.net/weixin_42089190/article/details/120579959