JAVA里面的位运算符>>,<<,>>>是什么意思,请举个列子具体说明一下?
答案:2 悬赏:20
解决时间 2021-01-28 08:05
- 提问者网友:孤山下
- 2021-01-27 23:05
JAVA里面的位运算符>>,<<,>>>是什么意思,请举个列子具体说明一下?
最佳答案
- 二级知识专家网友:拜訪者
- 2021-01-27 23:29
java 中:
>>带符号右移 (n>>2 将整型值带符号右移2位 )
<<带符号左移 (n<<2 将整型值带符号左移2位 )
>>>无符号右移 (n>>>2 将整型值无符号右移2位 ) 在32位系统中任何数左移(右移)32位还是它本身 例如:??a=a<<2将a的二进制数左移2位,右补0。若a=15,即二进制数00001111,左移2位得00111100,即十进制数60(为简单起见,我们用8位二进制数表示十进制数15,如果用16位,结果是一样的)。高位左移后溢出,舍弃不起作用。左移1位相当于该数乘以2,左移2位相当于该数乘以22=4。上面举的例子15<<2=60,即乘了4。但此结论只适用于该数左移时被溢出舍弃的高位中不包含1的情况。例如,假设以一个字节(8位)存一个整数,若a为无符号整型变量,则a=64时,左移一位时溢出的是0,而左移2位时,溢出的高位中包含1。
>>带符号右移 (n>>2 将整型值带符号右移2位 )
<<带符号左移 (n<<2 将整型值带符号左移2位 )
>>>无符号右移 (n>>>2 将整型值无符号右移2位 ) 在32位系统中任何数左移(右移)32位还是它本身 例如:??a=a<<2将a的二进制数左移2位,右补0。若a=15,即二进制数00001111,左移2位得00111100,即十进制数60(为简单起见,我们用8位二进制数表示十进制数15,如果用16位,结果是一样的)。高位左移后溢出,舍弃不起作用。左移1位相当于该数乘以2,左移2位相当于该数乘以22=4。上面举的例子15<<2=60,即乘了4。但此结论只适用于该数左移时被溢出舍弃的高位中不包含1的情况。例如,假设以一个字节(8位)存一个整数,若a为无符号整型变量,则a=64时,左移一位时溢出的是0,而左移2位时,溢出的高位中包含1。
全部回答
- 1楼网友:鸠书
- 2021-01-28 00:30
<<时 a=64并不存在高位溢出问题 因为是0000 0000 0100 0000 0000 0010 0000 0000 a=256所以也可以乘以移动的位数
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯