1、java中得左移与右移规则
n>>1 n右移一位,最高位为1,则补1(带单位,负数),最高位为0,则补0;
示例:n = 13; 二进制:n 表示:00001101; n>>1 : 00000110(最高位补1);就是相当于13/2 结果为6,移动两位就是13/4 = 3 ->00000011
n<<1 n左移一位,最高位丢弃,最低为补0;
示例:n = 16; 二进制:n表示:000010000; n<<1:000100000
结果是32 = 16* 2
2、左移右移得应用:
**、判断一个数得二进制中有多少个1;
例:n= 15: 二进制:1111
将n与1 进行与运算(都是1 得1 ,不相同得0 ,都为0 得0)
1111&1 -> 1111&0001 = 0001; 结果大于0,1得个数加1,然后将1左移得:0010。继续与运算,以此类推,代码展示:
还有一种简单得与运算也可算出,代码展示(此处就不做详细解释):
**判断该数是否为2得多少次方:
2得次方得二进制是只有一个1得。所以只需要判断该数得二进制是不是只包含一个1即可。具体代码上述判断count 是否等于1,即n&n-1 是否等于0。
java中得左移、右移、与运算及应用举例。
最新推荐文章于 2024-03-24 19:07:26 发布