Что означают числа с использованием нотации 0x? - PullRequest
89 голосов
/ 18 ноября 2011

Что означает префикс 0x для числа?

const int shared_segment_size = 0x6400;

Это из программы на Си. Я не могу вспомнить, что это значит и, в частности, что означает буква x.

Ответы [ 5 ]

84 голосов
/ 18 ноября 2011

Литералы, начинающиеся с 0x, представляют собой шестнадцатеричные целые числа. (база 16)

Число 0x6400 равно 25600.

6 * 16^3 + 4 * 16^2 = 25600

Для примера, включающего буквы (также используется в шестнадцатеричном формате, где A = 10, B = 11 ... F = 15)

Число 0x6BF0 равно 27632.

6 * 16^3 + 11 * 16^2 + 15 * 16^1 = 27632
24576    + 2816      + 240       = 27632
13 голосов
/ 18 ноября 2011

В C и языках, основанных на синтаксисе C, префикс 0x означает шестнадцатеричное (основание 16).

Таким образом, 0x400 = 4 & times; (16 2 ) + 0 & times; (16 1 ) + 0 & times; (16 0 ) = 4 & times; (( 2 4 ) 2 ) = 2 2 & times; 2 8 = 2 10 = 1024 или один двоичный код K.

И так 0x6400 = 0x4000 + 0x2400 = 0x19 & times; 0x400 = 25K

Приветствия и hth.,

9 голосов
/ 18 ноября 2011

Это шестнадцатеричное число.

0x6400 переводится в 4 * 16 ^ 2 + 6 * 16 ^ 3 = 25600

7 голосов
/ 04 мая 2016

Числа, начинающиеся с 0x, являются шестнадцатеричными (основание 16). 0x6400 представляет 25600.

Чтобы преобразовать,

  • умножьте последние цифры на 1
  • добавьте второй-последний раз 16 (16 ^ 1)
  • добавьте третийпоследние цифры, умноженные на 256 (16 ^ 2)
  • , добавьте четвертую и последнюю цифры раз 4096 (16 ^ 3)
  • ... и т. д.

факторы 1, 16, 256 и т. д. - это увеличивающиеся степени 16.

0x6400 = (0*1) + (0*16^1) + (4*16^2) + (6*16^3) = 25600 

или

0x6400 = (0*1) + (0*16) + (4*256) + (6*4096) = 25600 
4 голосов
/ 05 июня 2015

SIMPLE

Это префикс, указывающий, что число указывается в шестнадцатеричном формате, а не в какой-либо другой базе.Язык программирования C использует его, чтобы сообщить компилятору.

Пример:

0x6400 переводится в 6*16^3 + 4*16^2 + 0*16^1 +0*16^0 = 25600. Когда компилятор читает 0x6400, он понимает, что числошестнадцатеричный с помощью 0x терма.Обычно мы можем понять по (6400)16 or (6400)8 или по любому другому признаку.

Надежда. Каким-то образом помогла.

Добрый день,

...