我遇到了一个有趣的场景,当使用按位移位运算符时。如果第二个操作数是负数,按位移位操作是如何工作的?.
即 a << b ,"<<" 将 a 中的位模式向左移动 b 位。但是如果 b 是消极的,它不应该是运行时的错误吗?
我能够成功运行以下代码,但我不明白它是如何工作的?
public static void bitwiseleftShift(char testChar)
{
int val=testChar-'a';
int result= 1<<val;
System.out.println("bit wise shift of 1 with val="+val+" is "+result);
}
输入
bitwiseleftShift('A');// ASCII 65
bitwiseleftShift('0'); // ASCII 48
结果
bit wise shift of 1 with val=-32 is 1
bit wise shift of 1 with val=-49 is 32768
'a' 的 ASCII 是 97。有人可以帮我理解它是如何工作的吗?