-
右移运算符 (需要移位的数字
>>
移位的次数)
将需要移位的数字转化成二进制,将转化完的数字整体向右移动对应位移位数,低位舍弃,高位的空位补符号位(正数补零,负数补1)。
例:12 >> 2
12的二进制为1100,将1100整体右移两个单位,因为12为正数,高位填零,变成0011,是十进制中的3. -
左移运算符 (需要移位的数字 << 移位的次数)
将需要移位的数字转化成二进制,将转化完的数字整体向左移动对应位移位数,高位舍弃,低位的空位补0.
例:5<<2
5的二进制为0101,将0101整体左移两个单位,低位补0,得10100,十进制中的20。
在进行移位的时候,可能存在溢出问题。 -
/——
除法
结果=被除数/除数
被除数 除数 结果
浮点数 浮点数 浮点数
浮点数 整数 浮点数
整数 整数 整数
整数 浮点数 浮点数注:5/2的值为2(整除),而用(double)5/2的值则为2.5。
5%2=1(取余) -
>>
和/
的区别:- 操作对象类型不同
>>
只有整数才能使用
/
整数和浮点数都能够使用。 - 运算效率不同
通常情况下,右移操作比整数除法快。但涉及到浮点数的除法速度是最慢的。 - 优先级不同
>>
比/
的优先级低,两者同时参与运算,先计算乘除,后计算左移或右移。
- 操作对象类型不同