我碰到一个有趣的场景,当按位移位运算工作。 如果第二个操作数是负的,怎么做的按位移位运算的作品? 。
即<< B,“<<”在一个b个比特移位一个比特模式添加到左。 但是,如果b为neagtive,应该不是在运行时错误?
我能够成功运行下面的代码,但我不明白它是如何工作的?
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
ASCII的“一”是97。有人可以帮助我理解它是如何工作的?