2015-10-16 3 views
0

Мне интересно, как работает шестиугольная система в сборке?Подсчет Hex в сборе

Допустим, у меня есть: 0xFF, 0xAB, 0x10C, 0xa, 0xFC. У меня есть пример, где 4 + 0xFC = 0xFF Может кто-нибудь объяснить мне, что означает каждая буква и число и как она рассчитывается?

+0

Я укажу, что это тоже самое, это легкость, с которой мы можем преобразовать двоичное число в шестнадцатеричный. Есть 2 шестнадцатеричных цифры (полубайты) на байт и 4 бита за кусок. Очень легко превратить 0xC7 в 1100-0111b или наоборот - поворот 199 десятичных знаков в один из них значительно затруднен в голове. Это может помочь объяснить, почему вы видите шестнадцатеричные цифры, которые так часто используются в программировании – enhzflep

ответ

2

Вы действительно спрашиваете, как работает шестнадцатеричный. Аспект сборки ничего не меняет.

В десятичной цифре каждая цифра переходит от 0 до 9 (десять различных значений).

В шестнадцатеричном формате каждая цифра переходит от 0 до 9, затем в A, а затем в B, C, D, E и F (16 различных значений).

В обоих случаях верхние цифры прирастают, когда цифра справа стоит одна.

Кстати, 4 + 0XFC - 0x100.

0

Ваша информация 4 + 0xFC = 0xFF не соответствует действительности: 4 + 0xFC = 0x100.

Принимая шестнадцатеричное число 0xFC, 0x является просто ссылкой, что это шестнадцатеричное число - оно не является частью его значения FC. Существуют и другие способы выражения, это зависит от синтаксиса. Некоторые монтажники хотят 0FCh, в этом случае h говорит шестнадцатеричное число, и ведущая 0 является отличить значения от этикеткиFCh.

A к F представляет десятичные значения 10 в 15, так как система шестнадцатеричной является базой 16 и наша обычная системой подсчета является базой 10, так что не хватает это однозначного значения.

Дополнительным способом является восьмеричная система счисления 8, поэтому наши хорошо известные десятичные разряды 8 и 9 не используются. Давайте сначала посмотрим на это представление, потому что трудно говорить в шестнадцатеричном виде, не путаясь десятичным.

Октальный работает так же, как другие системы с номерами. Взятие ** означает «поднятый до власти», октал 74 означает 7 x 8**1 + 4 x 8**0. В этом случае 8 легко понять, но фактически не существует в восьмеричной системе. Это represention в восьмеричной является 10, так что я должен написал 7 x 10**1 + 4 x 10**0

Давайте посмотрим на некоторые дополнения. В десятичном

96 + 
    4 
--- 
100 (decimal) 

, потому что 6 + 4 формирует перенос и так делает 9 + carry. Таким же образом в восьмеричном

74 + 
    4 
--- 
100 (octal) 

, потому что 4 + 4 формирует перенос и так делает 7 + carry.

Hex работает так же, но это сложно описать, потому что нам не хватает 6 пальцев для подсчета. Номер FC означает F x 10**1 + C x 10**0. В этом случае 10 представляет собой шестнадцатеричный формат десятичного числа 16. Выражается как десятичное число: 15 x 16**1 + 12 x 16**0.

Теперь для шестнадцатеричной суммы вы были неправильно проинформированы.

FC + 
    4 
--- 
100 (hexadecimal) 

, потому что C + 4 формирует перенос и так делает F + carry.

Hexadecimal имеет свой базис в двоичной нотации, поскольку так работает компьютерная арифметика. Десятичное число 15 - двоичное число 1111, а десятичное число 12 - двоичное число 1100. Шестнадцатеричный - это просто более удобный способ выразить двоичный код, беря двоичные цифры (бит) 4 за раз. Таким образом, здесь двоичный код 1111 равен hex F, а двоичный код 1100 - это hex C. Объединяя их, двоичный код 11111100 - это hex FC.

Hex нотация (для всего этого) полезен, когда видны большие значения. Человеческий ум не может легко схватить длинные серии бит, такие как 32-битное значение 11011110101011011011111011101111, но в шестнадцатеричном формате это DEADBEEF.

Это может занять некоторое время, чтобы привыкнуть к шестизначным обозначениям, но через некоторое время (например, при изучении человеческого языка) вы начнете считать таким образом, а не постоянно переводить туда и сюда.

Смежные вопросы