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