Java 位运算符:左移、右移、无符号右移

本文详细介绍了Java中的位运算符,包括左移、右移和无符号右移,并通过实例展示了这些运算符如何作用于整数的二进制位上。

概述

上一篇文章我们说到了Java运算符的优先级的问题,也给大家提供了一个简单易记的口诀,那么这一篇博文,我们就来看一看Java运算符中的位运算符:左移,右移,无符号右移。程序中的所有数在计算机内存中都是以二进制的形式储存的。位运算说穿了,就是直接对整数在内存中的二进制位进行操作。

package test;

public class Test24 {
    public static void main(String[] args){
        System.out.println(Integer.toBinaryString(-7));//将整型-7转化为二进制形式显示
        System.out.println(7>>2);//将整型7右移2位
        System.out.println(7>>>2);//将整型7无符号右移2位
        System.out.println(-7>>2);//将整型-7右移两位
        System.out.println(-7>>>2);//将整型-7无符号右移两位
        System.out.println(7<<2);//将整型7左移移两位
        System.out.println(-7<<2);//将整型-7左移移两位
    }
}

结果为:

11111111111111111111111111111001
1
1
-2
1073741822
28
-28

解析:

7右移2位

00000000 00000000 00000000 00000111//7的二进制(不要告诉我你不知道为什么)
右移两位后
00000000 00000000 00000000 00000001//最左边用符号位填充
转换十进制为:
1

7无符号右移2位

00000000 00000000 00000000 00000111//7的二进制(不要告诉我你不知道为什么)
右移两位后
00000000 00000000 00000000 00000001//最左边用0填充
转换十进制为:
1

-7右移2位

11111111111111111111111111111001//-7的二进制
右移两位后
11111111111111111111111111111110//最左边用符号位填充
转换十进制为:
-2

-7无符号右移2位

11111111111111111111111111111001//-7的二进制
右移两位后
00111111111111111111111111111110//最左边用0填充
转换十进制为:
1073741822

7左移2位

00000000 00000000 00000000 00000111//7的二进制(不要告诉我你不知道为什么)
右移两位后
00000000 00000000 00000000 00011100//最右边用0填充
转换十进制为:
28

-7左移2位

11111111111111111111111111111001//-7的二进制
右移两位后
11111111111111111111111111100100//最左边用0填充
转换十进制为:
-28

总结:

右移时,位最左边用符号位填充(0为正,1为负),即负数用1填充,正数用0填充;无符号右移时,不管正负数都是用0填充;左移是最右边都是用0填充,不管正负数。

番外:

对二进制标示模糊的同学可以去了解一下原码,反码,补码基础知识。这样对你对以上二进制的表示理解有一定的帮助。当然,如果知道的话,代表同学你看到了最后,不妨污一下你的小手,在文章的左边给博主点个喜欢吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值