都是1才为1,有0就是0.
如果一个数是2的次幂,则其二进制中只有一位为1其他为0,将其减1获得的值刚好1全部变为11变为0,此时做与运算,则结果为0,即可通过结果是否为0判断是否为2的次幂.
要判断是否是4的次幂,首先第一条件是要满足2的次幂,也就是只存在一位为1,其次是1的位置,必须是偶数的(16  4  1 的二进制分别为 0001 0000  0000 0010  0000  0001 )以此类推可以得到.....0101 0101的单元素子集一定是4的次幂,再已经判断是2的次幂满足的之存在单个1的情况下,与......0101 0101做与运算,结果为其本身,则1的位置是偶数位,即为4的次幂.
如果一个数为奇数, 则 二进制最后一位一定为1 ,与1与运算,则结果为1 ,如果为偶数,最后一位为0 ,与1与运算结果为0.
ex: 获取负数,即各位取反末尾加1
左移" 乘以2的b次方 (翻倍)可能会溢出发生符号改变?
若左操作数是正数,则高位补"0",若左操作数是负数,则高位补"1",这叫做符号位扩展(保留符号位,sign extension ),在进行右移操作时用来保持负数的符号.