Это на самом деле довольно сложно для Google.Quick: Установить верхние 2 бита int
Как вы устанавливаете (побитовые или) верхние два бита 32-битного int?
Я получаю предупреждения компилятора от всего, что я пробую.
Это на самом деле довольно сложно для Google.Quick: Установить верхние 2 бита int
Как вы устанавливаете (побитовые или) верхние два бита 32-битного int?
Я получаю предупреждения компилятора от всего, что я пробую.
Попробуйте это:
integerVariable |= 3 << 30;
Это может быть более понятным использование (1 < < 31) | (1 < < 30) вместо (3 < < 30), или вы можете добавить комментарий о своем поведении. В любом случае компилятор должен иметь возможность оптимизировать выражение до единственного значения, которое равно int.MinValue >> 1
== int.MinValue/2
.
Если это uint
:
uintVar |= 3u << 30;
integerVariable |= 0xC0000000;
0xC0000000u
Используйте для беззнаковое целочисленной переменной.
Отображение всего 32-разрядного целого числа в шестнадцатеричной нотации яснее для меня, чем бит-сдвиги в ответе Мехрдада. Скорее всего, они скомпилируются на одно и то же, поэтому используйте то, что вам кажется более понятным.
Мне это нравится. Версия в комментарии еще более понятна. Принято. – Flipster
@FlipScript: Перемещенный комментарий к ответу. –