Я довольно смущен этим выражением здесь. Я программист на Java, но я не очень хорошо разбираюсь в бит-манипуляциях.Смещение по отрицательным числам
Я думаю, что я понимаю, что ниже правильно:
Input : 1 << 10
Output: 0000000000000000000010000000000
Для положительных чисел, я думаю, что это вы двигаетесь 1 по 10 бит.
Путаница, когда у меня есть ниже:
int val = -10 (binary representation : 1111111111111111111111111110110)
Input : 1 << val
Output: 0000000010000000000000000000000
Это было бы очень здорово, если бы кто-то может объяснить мне значение левого сдвига или правого сдвига по отрицательным числом.
Большое спасибо ... Я думаю, что я получить его. – dharam
Причина только для рассмотрения младших разрядов заключается в том, что аппаратное обеспечение делает это именно так. Было бы неэффективно делать это по-другому (скажем, сдвиг влево для положительного и правого для отрицательных чисел или возврат 0, если вы переместили 'int' на более чем 31). – starblue