def getBit(num, bit_idx=8):
return (num & (1 << (8 - bit_idx))) >> (8 - bit_idx)
num是图像中某一个字节,num展开的二进制为0bxxxxxxxx , x为0或1
bit_idx默认为8,即 bit的位置 默认为8位
&:按位与操作,只有 1 &1 为1
1 & 0 、 0 & 0 为 0, 可用于进位运算。
假设我要取第五位bit,bit-idx=5:
1 << (8 - 5) ==> 1 << 3
1 << 3 表示1左移三位,二进制表示为 0b00001000
然后和num进行与操作,由与操作的理解来说,那就只保留第三位的值
假设num=0b11111111,进行与操作后结果就变成了0b00001000
然后得出的结果又进行移位:>> (8 - bit_idx) ,把结果右移三位 , 为1