关于JAVA中<<,>>和>>>运算

本文深入解析位运算符<<、>>、<<<、>>>的使用方法,涵盖十进制与二进制转换、原码、反码和补码的概念,以及正数和负数的位移运算过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

要想运算<<、>>、<<<、>>>这些符号
首先必须了解:
                       ①十进制数和二进制数相互转换。
                       ②原码、反码和补码。

’<<'表示左移移,不分正负数,低位补0;

正数:比如运算’16<<2’的结果
           首先 你要将16转换为二进制数

       				16的二进制原码为0001 0000
       				16的二进制反码为0001 0000
       				16的二进制补码为0001 0000

           16<<2就是将16的二进制补码左移两位,低位补0,那么得到:

					左移两位后的补码为0100 0000

           将得到的补码转换为十进制,那么16<<2的结果为64
负数:比如运算’-16<<2’的结果,首先 你要将-16转换为二进制数

       				-16的二进制原码为1001 0000
       				-16的二进制反码为1110 1111
       				-16的二进制补码为1111 0000

           -16<<2就是将16的二进制补码左移两位,低位补0,那么得到:

                    左移两位后的补码为1100 0000
                    左移两位后的反码为1011 1111
                    左移两位后的原码为1100 0000

           将得到的原码转换为十进制,那么-16<<2的结果为-64

’>>'表示右移,如果该数为正,则高位补0,若为负数,则高位补1;

正数:比如运算’16>>2’的结果,首先 你要将16转换为二进制数

       				16的二进制原码为0001 0000
       				16的二进制反码为0001 0000
       				16的二进制补码为0001 0000

           16>>2就是将16的二进制补码右移两位,高位补0,那么得到:

					右移两位后的补码为0000 0100

           将得到的补码转换为十进制,那么16>>2的结果为4
负数:比如运算’-16>>2’的结果,首先 你要将-16转换为二进制数

       				-16的二进制原码为1001 0000
       				-16的二进制反码为1110 1111
       				-16的二进制补码为1111 0000

           -16>>2就是将16的二进制补码右移两位,高位补1,那么得到:

                    右移两位后的补码为1111 1100
                    右移两位后的反码为1111 1011
                    右移两位后的原码为1000 0100

           将得到的原码转换为十进制,那么-16>>2的结果为-4
**

'>>>'表示无符号右移,也叫逻辑右移,即若该数为正,则高位补0,而若该数为负数,则右移后高位同样补0

**
正数:比如运算’16>>>2’,它的运算过程同等于’16>>2’,
           方法参考上面’16>>2’的正数运算。
负数:比如运算’-16>>>2’的结果,首先 你要将-16转换为二进制数(32位)

             -16的二进制原码为10000000 00000000 00000000 00010000
       		 -16的二进制反码为11111111 11111111 11111111 11101111
       		 -16的二进制补码为11111111 11111111 11111111 11110000

           -16>>>2就是将16的二进制补码右移两位,高位补0,那么得到:

             右移两位后的补码为00111111 11111111 11111111 11111100

转换为十进制,那么-16>>>2的结果为1073741820

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值