Co oznaczają liczby w notacji 0x?

Co oznacza przedrostek 0x na liczbie?

const int shared_segment_size = 0x6400;

Pochodzi z programu C napisanego na Linuksie. Nie mogę sobie przypomnieć, co to znaczy, a w szczególności co oznacza litera x.

Author: Bart, 2011-11-18

5 answers

Literały rozpoczynające się od 0x są liczbami szesnastkowymi. (base 16)

Liczba 0x6400 to 25600.

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

Dla przykładu zawierającego litery (używane również w notacji szesnastkowej, gdzie A= 10, B = 11 ... F = 15)

Liczba 0x6BF0 to 27632.

6 * 16^3 + 11 * 16^2 + 15 * 16^1 = 27632
24576    + 2816      + 240       = 27632
 65
Author: Mysticial,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-11 23:15:32

W języku C i językach bazujących na składni C, przedrostek 0x oznacza szesnastkowy (baza 16).

Tak więc, 0x400 = 4×(162) + 0×(161) + 0×(160) = 4×((24)2) = 22 × 28 = 210 = 1024, lub jeden binarny K.

I tak 0x6400 = 0x4000 + 0x2400 = 0x19×0x400 = 25k

Cheers & hth.,

 11
Author: Cheers and hth. - Alf,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-18 18:21:20

Jest liczbą szesnastkową.

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

 7
Author: knittl,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-29 02:39:43

SIMPLE

Jest to prefiks, który wskazuje, że liczba jest w systemie szesnastkowym, a nie w innej bazie. Język programowania C używa go do określenia kompilatora.

Przykład:

0x6400 tłumaczy się na 6*16^3 + 4*16^2 + 0*16^1 +0*16^0 = 25600. gdy kompilator odczytuje 0x6400, rozumie, że liczba jest szesnastkowa za pomocą wyrażenia 0x. Zwykle możemy zrozumieć przez (6400)16 or (6400)8 lub dowolną bazę ..

Nadzieja w jakiś sposób pomogła.

Dzień dobry,

 4
Author: loyola,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-05 05:56:46

Liczby rozpoczynające się od 0x są szesnastkowe (baza 16).0x6400 reprezentuje 25600.

Do konwersji,

  • pomnóż ostatnią cyfrę razy 1
  • dodaj drugą-ostatnią cyfrę razy 16 (16^1)
  • dodaj trzecią-ostatnią cyfrę razy 256 (16^2)
  • dodaj czwartą-ostatnią cyfrę razy 4096 (16^3)
  • ...i tak dalej

Współczynniki 1, 16, 256 itd. są potęgami 16.

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

Lub

0x6400 = (0*1) + (0*16) + (4*256) + (6*4096) = 25600 
 3
Author: Sithu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-04 16:46:37