Что означают числа с обозначением 0x?


107

Что означает 0xприставка к номеру?

const int shared_segment_size = 0x6400;

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


2
Ищите "шестнадцатеричное представление"
asawyer

2
@asawyer Спасибо. До того, как я выбрал «0x» как шестнадцатеричный, я понятия не имел, откуда искать.
Terry Li

3
Поиск 0x prefix C++приводит вас сюда прямо сейчас :)
Карл Смит

Ответы:


112

Литералы, начинающиеся с, 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

2
Что меня интересовало, как обозначать отрицательные числа в шестнадцатеричном формате? Как -0xff или 0x-ff? Думаю, первое, но не знаю.
Люк

7
@Luc Первый правильный. Хотя чаще вижу именно 0xffffffffтакие. ( 0xffffffff = -1для 32-битного int с дополнением до 2)
Mysticial

@Luc Отрицательные числа представлены в двоичном формате с использованием дополнения до 2 - умный способ, который не требует знака «-». Итак, это в основном преобразование из двоичного в шестнадцатеричное, отрицательное или положительное.
Шуво Саркер,

@ShuvoSarker Спасибо за добавление! Это просто представление памяти, я думаю, похоже на то, если бы мы согласились, что у нас есть набор чисел от 0 до 999 и что 1000-1999 будут представлять отрицательные числа. Мой вопрос касался удобочитаемых обозначений, хотя знание того, как компьютеры делают это, могло бы помочь кому-то другому, так что спасибо :)
Люк,

16

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

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

Итак, 0x6400 = 0x4000 + 0x2400 = 0x19 × 0x400 = 25K


10

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

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


8

Числа, начинающиеся с, 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 

7

ПРОСТО

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

Пример :

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

Надежда в чем-то помогла.

Добрый день,

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.