Что означает 0xFE в программе на C? - PullRequest
6 голосов
/ 07 августа 2011

В приведенной ниже программе

void main()
{

       int x=0xFE;

       int y=0xF3;
      .....
}

Какие значения назначены x=0xFE и y=0xF3?Что представляет собой 0x?

Ответы [ 3 ]

15 голосов
/ 07 августа 2011

Запись значения с 0x перед означает, что оно записано в шестнадцатеричном формате , где цифры 0-9 и дополнительный «числовой» AF используются для получения системы счисления с основанием 16. Большим преимуществом этого является то, что каждая шестнадцатеричная цифра представляет ровно 4 бита.

0xFE = 254
0xF3 = 243

Итак, х = 254 и у = 243.

6 голосов
/ 07 августа 2011

Числа могут быть представлены по-разному.В 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. Мне всегда было немного неудобно использовать.

2 голосов
/ 07 августа 2011

Значения представлены в шестнадцатеричном формате, так как им предшествует идентификатор 0x. Для преобразования значений вы можете использовать компьютерный калькулятор в режиме программиста или в Google. http://screensnapr.com/v/aQEPYk.png

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...