Я знаю, что вы можете битмаскировать с помощью ANDing значение с 0. Однако, как я могу бить маску определенных nibbles и поддерживать другие. Другими словами, если у меня есть 0x000f0b7c, и я хотел замаскировать все, кроме b (другими словами, мой результат будет 0x00000b00), как бы я использовал AND для этого? Это потребует нескольких шагов?Как битмаскировать число (в шестнадцатеричном формате) с помощью оператора И?
ответ
Вы можете лучше понять логические операции, если вы представляете значения в двоичной форме.
операции И между двумя двоичными цифрами возвращает 1, если оба двоичных разрядов имеют значение 1, в противном случае она возвращает 0.
Предположим, у вас есть два двоичных цифр и б можно построить следующую таблицу истинности «»:
a | b | a AND b ---+---+--------- 0 | 0 | 0 1 | 0 | 0 0 | 1 | 0 1 | 1 | 1
операция маскирования состоит из операции AND заданного значения с «маской», где каждый бит, который нуждается в т o сохраняется в 1, а каждый бит для сброса устанавливается равным 0. Это делается путем ANDing каждого бита данного значения с соответствующим битом маски.
Приведенное значение, 0xf0b7c, можно преобразовать следующим образом:
f 0 b 7 c (hex) 1111 0000 1011 0111 1100 (bin)
Если вы хотите сохранить только биты, соответствующие «Ъ» значения (биты 8..11) вы можете замаскировать его это путь:
f 0 b 7 c 1111 0000 1011 0111 1100 0000 0000 1111 0000 0000
значение 0000 0000 1111 0000 0000 может быть преобразован в шестнадцатеричный и имеет значение 0xf00.
Так что, если вы вычислите «0xf0b7c И 0xf00», вы получите 0xb00.
- 1. Как представить целое число в шестнадцатеричном формате с помощью Gson?
- 2. Символы в шестнадцатеричном формате
- 3. C++ fwrite() в шестнадцатеричном формате
- 4. Как печатать байты в шестнадцатеричном формате с помощью System.out.println?
- 5. получения NSData в шестнадцатеричном формате
- 6. Преобразование поплавок в шестнадцатеричном формате
- 7. Как установить определенные биты? - в шестнадцатеричном формате?
- 8. Как отправить ответ Winsock в шестнадцатеричном формате?
- 9. Печать переменных в шестнадцатеричном или десятичном формате
- 10. как распечатать вывод в шестнадцатеричном формате
- 11. Как преобразовать этот формат в шестнадцатеричном формате?
- 12. Как получить цвет фона в шестнадцатеричном формате?
- 13. Вставить значение в буфер в шестнадцатеричном формате
- 14. Как свести число с помощью оператора сдвига
- 15. Команда AT, смс получен в шестнадцатеричном формате
- 16. Десятичное число в шестнадцатеричном виде в python
- 17. Python: как битмаскировать и сравнивать адрес mac?
- 18. Экстракт matplotlib colormap в шестнадцатеричном формате
- 19. Преобразовать int в строку в шестнадцатеричном формате
- 20. Значения RGB OpenCV в шестнадцатеричном формате?
- 21. Что такое эквивалент rbga в шестнадцатеричном формате?
- 22. Python: напечатать переменную в шестнадцатеричном формате
- 23. Huffman vs RLE в шестнадцатеричном формате
- 24. Проверьте, является ли число в шестнадцатеричном формате и преобразует его в десятичный
- 25. Недопустимый целочисленный символ в шестнадцатеричном формате
- 26. Сохраняет ли Hbase данные в шестнадцатеричном формате?
- 27. Почему PostgreSQL хранит данные в шестнадцатеричном формате в собственном формате?
- 28. Как печатать цифры в шестнадцатеричном формате с начальным нулем
- 29. C# Как отформатировать номер в шестнадцатеричном формате с префиксом '0x'
- 30. Как добавить данные в std :: string в шестнадцатеричном формате?
Понял! Будет ли это работать в любой ситуации? Другими словами, будет ли ANDing байтом с 0xf всегда поддерживать его? – qwerty5683
Значение 0xf в двоичном выражении равно 1111, или, если вы представляете его в виде байта (8 бит), 00001111. ANDing ** байт ** с 00001111 (0xf) сохранит только 4 младших значащих бита (4 на далеко правее), а если вы и байт с 11111111 (0xff), вы в основном получаете исходный байт. Я рекомендую вам практиковать эти операции с помощью конвертера hex-bin (это может сделать Windows «calc»). – Disti