Що означають числа, що використовують позначення 0x?


107

Що означає 0xпрефікс на число?

const int shared_segment_size = 0x6400;

Це з програми С. Я не можу згадати, що це означає, і особливо, що xозначає лист .


2
Шукати "шістнадцяткову нотацію"
asawyer

2
@asawyer Дякую Перш ніж я взяв "0x" як шістнадцятковий, я не мав уявлення, звідки шукати.
Террі Лі

3
Пошук 0x prefix C++приводить вас сюди зараз :)
Карл Сміт

Відповіді:


111

Літерали, які починаються з 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 та на основі синтаксису С префікс 0xозначає шістнадцятковий (основа 16).

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

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



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.