Java数据通道移位_Java中的整型移位操作,为什么是“只有数值右端的低5位才有用”?...

一看到你的问题,我也不理解这句话。所以我写了一个简单的程序来看位移操作用的是什么 bytecode :

public class Test {

public static void main(String[] args) {

byte b = 32;

int i = b << 4;

System.out.println(i);

}

}

用 javap 查看编译出来的字节码:

public static void main(java.lang.String[]);

Code:

0: bipush 32

2: istore_1

3: iload_1

4: iconst_4

5: ishl

6: istore_2

7: getstatic #2 // Field java/lang/System.out:Ljava/

io/PrintStream;

10: iload_2

11: invokevirtual #3 // Method java/io/PrintStream.printl

n:(I)V

14: return

}

Shifts value2 left by the amount indicated in the five low bits of value1

所以我终于明白英文原文里的“right-hand side”指的并不是某个数值的“右端”,“right-hand side”是一个术语,应该翻译成“右操作数”。

Only the five low-order bits of the right-hand side will be used.

这句话可以做这样的理解:位移操作符只用到了它的右操作数的低5位。

我看到这句话的时候就理解成只使用了左操作数的低5位,可能你也是这样理解的。

only the five lowest-order bits of the right-hand operand are used as the shift distance

这里使用“right-hand operand”更明确地表示是右手边的操作数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值