Числа могут быть представлены по-разному.В C вы можете использовать десятичную (например, 243), восьмеричную (например, 0363) или шестнадцатеричную (0xF3).
Если вы пишете 243, вы имеете в виду
243 = 2*10^2 + 4*10^1 + 3*10^0 = 2*100 + 4*10 + 3 = 243
, где ^
означает «в силу».Это означает, что наши нормальные числа - это основание 10 или десятичное число.Шестнадцатеричное использует основание 16, и цифры 0123456789ABCDEF
, где 0 = 0, ... 9 = 9, A = 10, B = 11, ... F = 15.Поэтому 243 также можно записать как
0xF3 = 15*16^1 + 3*16^0 = 15*16 + 3 = 243
Это то, что вы видите.Другими словами, 0xF3 - это просто еще один способ записи 243, а 0xFE - это еще один способ записи 254 (15 * 16 + 14 = 254).
Преимущество состоит в том, что каждая шестнадцатеричная цифра представляет 4 бита, поэтому 2шестнадцатеричные цифры могут быть использованы для отображения байта.Если вы знаете, что 0x0 равно 0000 в двоичном формате и т. Д., То есть до 0xF, что в двоичном значении равно 1111, опытный пользователь может легко «увидеть» биты в байте.
FWIW, восьмеричное значение находится в базе8, поэтому единственные цифры - 01234567. Мне всегда было немного неудобно использовать.