左、右移用法

本文介绍了位运算符中的左移(<<)和右移(>>、>>>)操作,强调它们在代码优化中的作用。左移相当于乘以2,右移相当于除以2。对于负数右移,高位补1;无符号右移则无论正负,高位均补0。通过实例展示了不同位移操作的结果,揭示了位移作为取余过程的特性。

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

/**
 * 1、<<(左移),>>(右移)都属于位运算符.其运算比乘除快,所以我们可以用其优化代码。
 * 2、<<表示左移,针对二进制,转换成二进制后向左移动,低位补0;
 * 3、>>表示右移,针对二进制,转换成二进制后向右移动;
 * (1)左移将原数乘以2
 * (2)右移将原数除以2
 * (3)负数有符号右移高位补1
 * (4)无符号右移无论正负高位添0
 * (5)位移是一个取余的过程
 * 4、>>>表示无符号右移(没有无符号左移), >>>与>>唯一的不同是它无论原来的最左边是什么数,统统都用0填充
 */
public class LeftAndRightRemove {
    public static void main(String[] args) {
        System.out.println("100左移2位:" + (100 << 2)); // 400, 2 % 32 = 2
        System.out.println("100右移2位:" + (100 >> 2)); // 25, 2 % 32 = 2
        //位移是一个取余的过程
        System.out.println("100左移32位:" + (100 << 32)); // 100, 32 % 32 = 0
        System.out.println("100右移32位:" + (100 >> 32)); // 100, 32 % 32 = 0
        System.out.println("100左移34位:" + (100 << 34)); // 400, 34 % 32 = 2
        System.out.println("100右移34位:" + (100 >> 34)); // 25, 34 % 32 = 2
        //负数有符号右移高位补1
        System.out.println("-100右移2位:" + (-100 >> 2)); // -25
        //无符号右移无论正负高位添0
        System.out.println("100无符号右移2位:" + (100 >>> 2)); // 25
        System.out.println("-100无符号右移2位:" + (-100 >>> 2)); // 1073741799
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

静波波呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值