java中得左移、右移、与运算及应用举例。

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。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章