Java[探索](三)移位操作符

本文详细介绍了移位操作符的概念及应用,包括左移位、有符号右移位和无符号右移位的特点,并通过示例代码展示了不同类型的移位操作及其结果。

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

一 简介

先来回答几个问题:


1.移位操作符是什么?

2.移位操作符有哪些组成,各有什么特点?


第一个问题,移位操作符的的运算对象是二进制的“位”,它只可用于处理整数类型。


第二个问题,它由左移位操作符(<<)、右移位操作符(>>)、"无符号"右移位操作符(>>>)

左移位操作符(<<):如操作符右侧的数量是2,则将左边的操作数向左移动2位(低位补0)

“有符号”右移位操作符(>>):如操作符右侧的数量是2,则将左边的操作数向右移动2位(符号为正高位插入0,否则高位插入1)

“无符号”右移位操作符(>>>):如操作符右侧的数量是2,则将左边的操作数向右移动2位(无论符号正负高位都插入0)


二 下面来一个Demo

package thired;

public class DemoOne {

	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int num1=5,num2=2,num3=-5;
		
		//左移位操作符
		System.out.println("左移位操作符:"+(num1<<num2));
		//“有符号”右移位操作符
		System.out.println("右移位操作符(正):"+(num1>>num2));
		System.out.println("右移位操作符(负):"+(num3>>num2));
		//“无符号”右移位操作符
		System.out.println("“无符号”右移位操作符(正):"+(num1>>>num2));
		System.out.println("“无符号”右移位操作符(负):"+(num3>>>num1));
		
		
	}

}

运行结果

左移位操作符:20
右移位操作符(正):1
右移位操作符(负):-2
“无符号”右移位操作符(正):1
“无符号”右移位操作符(负):134217727


三 注意


1.对char、byte、short进行移位操作时会将char、byte、short转换为int,得到的结果也是int


2.对long进行移位操作时位是会转换成long,得到的结果也是long


1.移位可与等号(<<= 、>>=、>>>=)组合使用,如果对byte和short进行移位操作可能会不正确,因为byte和short会先转换成int.看看代码


package thired;

public class DemoOne {

	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int num1=5,num2=2,num3=-5;
		
		//左移位操作符
		System.out.println("左移位操作符:"+(num1<<num2));
		//“有符号”右移位操作符
		System.out.println("右移位操作符(正):"+(num1>>num2));
		System.out.println("右移位操作符(负):"+(num3>>num2));
		//“无符号”右移位操作符
		System.out.println("“无符号”右移位操作符(正):"+(num1>>>num2));
		System.out.println("“无符号”右移位操作符(负):"+(num3>>>num1));
		
		
		//byte运算不正确
		byte b=-1;
		System.out.println("byte运算1:"+(b>>>=2));
		System.out.println("byte运算2:"+(b>>>2));

	}

}

运行结果:

左移位操作符:20
右移位操作符(正):1
右移位操作符(负):-2
“无符号”右移位操作符(正):1
“无符号”右移位操作符(负):134217727
byte运算1:-1
byte运算2:1073741823


再来看两个方法 Integer.toBinaryString,用字符串形式输出二进制数。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值