В C # у меня есть 32-битное значение, которое я сохраняю в int. Мне нужно посмотреть, установлен ли конкретный бит. Мне нужен бит 0x00010000
.
Я придумал следующее решение:
Вот что я ищу:
Hex: 0 0 0 1 0 0 0 0 0 Binary 0000|0000|0000|0001|0000|0000|0000|0000|0000
Итак, я сдвигаю бит вправо на 16, что дает мне:
Hex: 0 0 0 0 0 0 0 0 1 Binary 0000|0000|0000|0000|0000|0000|0000|0000|0001
Затем я сдвигаю бит влево на 3, что дает мне :
Hex: 0 0 0 0 0 0 0 0 8 Binary 0000|0000|0000|0000|0000|0000|0000|0000|1000
Затем я преобразую свое 32-битное значение в байт и смотрю, равно ли оно 8.
Мой код будет примерно таким:
int value = 0x102F1032;
value = value >> 16;
byte bits = (byte)value << 3;
bits == 8 ? true : false;
Есть ли более простой способ проверить, установлен ли конкретный бит? без всякого переключения?