Я запутался в операторах битового сдвига (в c #).
Можете ли вы пролить свет на то, почему значение «a» ниже возвращает «1» вместо «4294967296»:
ulong a = 1 << 32
Я использую 32-битную машину.Это причина, почему?т.е. если бы я запускал тот же самый точный код на 64-битной машине, было бы значение «a» равным 4294967296?Я сильно сомневаюсь, что 32-битная или 64-битная архитектура имеет какое-либо отношение к моему вопросу, но я все равно должен был задать вопрос.приведет к 32-битному (или большему) значению?
Пример того, чего я надеюсь достичь:
long a = 1 << 31; // I want the value 2147483648 not the value -2147483648
long b = 1 << 32; // I want the value 4294967296 not the value 1