Java运算符
2019-08-06 本文已影响0人
arrow_zh
1、左移 <<
1.1 实例
int value= 10;
int newValue = (value<< 1);
System.out.println(newValue); //输出为20
1.2 分析
先将10转换为2进制 : 0000 0000 0000 1010 十进制为:10
左移(向左移除高位,低位补0):0000 0000 0001 0100 十进制为:20
数学公式: value(待移位的数字) 乘以 2的n(移动位数)次方 即 10 * 2¹ = 20
2、右移 >>
2.1 实例
int value= 10;
int newValue = (value>> 1);
System.out.println(newValue ); //输出为 5
2.2 分析
先将10转换为2进制 : 0000 0000 0000 1010 十进制为:10
左移(向右移除低位,高位补0):0000 0000 0000 0101 十进制为:5
数学公式: value(待移位的数字) 除以 2的n(移动位数)次方 即 10 / 2¹ = 5
3、总结
箭头指向的方向为二进制数字移动的方向
当int类型进行左移操作时,左移位数大于等于32位操作时,会先求余(%)后再进行左移操作。也就是说左移32位相当于不进行移位操作,左移40位相当于左移8位(40%32=8)
当long类型进行左移操作时,long类型在二进制中的体现是64位的,因此求余操作的基数也变成了64,也就是说左移64位相当于没有移位,左移72位相当于左移8位(72%64=8)
注意int long 最高位表示正负数,0-表示正数 1-表示负数 所以在移位的时候需要注意