Я столкнулся с интересным сценарием, когда работал с побитовым оператором сдвига. Если второй операнд отрицательный, как работает операция побитового сдвига?,
i. < b, < < сдвигает бит влево на b бит в a. Но если 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
ASCII для 'a' - 97. Может ли кто-нибудь помочь мне понять, как это работает?