Apa arti angka yang menggunakan notasi 0x?


107

Apa arti 0xawalan pada angka?

const int shared_segment_size = 0x6400;

Ini dari program C. Saya tidak dapat mengingat apa artinya dan terutama apa arti surat itu x.


2
Cari "notasi heksadesimal"
asawyer

2
@asawyer Terima kasih. Sebelum saya memilih "0x" sebagai heksadesimal, saya tidak tahu harus mencari dari mana.
Terry Li

3
Mencari 0x prefix C++membawa Anda ke sini sekarang :)
Carl Smith

Jawaban:


111

Literal yang dimulai dengan 0xadalah bilangan bulat heksadesimal. (basis 16)

Nomornya 0x6400adalah 25600.

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

Untuk contoh termasuk huruf (juga digunakan dalam notasi heksadesimal di mana A = 10, B = 11 ... F = 15)

Nomornya 0x6BF0adalah 27632.

6 * 16^3 + 11 * 16^2 + 15 * 16^1 = 27632
24576    + 2816      + 240       = 27632

2
Apa yang saya pikirkan, bagaimana seharusnya angka negatif dilambangkan dengan hex? Suka -0xff atau 0x-ff? Saya kira yang pertama, tapi saya tidak tahu.
Luc

7
@ Luc Yang pertama benar. Meski lebih sering saya melihat saja 0xffffffffdan itu. ( 0xffffffff = -1untuk 32-bit int dengan asumsi pelengkap 2)
Mysticial

@Luc Negatives angka direpresentasikan dalam biner menggunakan komplemen 2 - cara cerdas yang tidak memerlukan tanda '-'. Jadi, ini pada dasarnya mengubah dari biner menjadi hex, negatif atau positif.
Shuvo Sarker

@ShuvoSarker Terima kasih atas tambahannya! Itu hanya representasi memori, saya kira serupa dengan jika kita setuju bahwa kita memiliki serangkaian angka dari 0--999 ​​dan 1000--1999 akan mewakili angka negatif. Pertanyaan saya adalah tentang notasi yang dapat dibaca manusia, meskipun mengetahui bagaimana komputer melakukannya mungkin membantu orang lain, jadi terima kasih :)
Luc

16

Dalam C dan bahasa berdasarkan sintaks C, awalan 0xberarti heksadesimal (basis 16).

Jadi, 0x400 = 4 × (16 2 ) + 0 × (16 1 ) + 0 × (16 0 ) = 4 × ((2 4 ) 2 ) = 2 2 × 2 8 = 2 10 = 1024, atau satu K biner .

Jadi 0x6400 = 0x4000 + 0x2400 = 0x19 × 0x400 = 25K


10

Ini adalah angka heksadesimal.

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


8

Angka yang dimulai dengan 0xadalah heksadesimal (basis 16). 0x6400mewakili 25600.

Untuk mengubah,

  • kalikan angka terakhir dengan 1
  • tambahkan digit kedua terakhir kali 16 (16 ^ 1)
  • tambahkan digit ketiga terakhir kali 256 (16 ^ 2)
  • tambahkan digit keempat terakhir kali 4096 (16 ^ 3)
  • ...dan seterusnya

Faktor 1, 16, 256, dll. Adalah peningkatan pangkat dari 16.

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

atau

0x6400 = (0*1) + (0*16) + (4*256) + (6*4096) = 25600 

7

SEDERHANA

Ini adalah awalan untuk menunjukkan bahwa bilangan tersebut dalam heksadesimal daripada di beberapa basis lain. Bahasa pemrograman C menggunakannya untuk memberi tahu kompiler.

Contoh:

0x6400diterjemahkan menjadi 6*16^3 + 4*16^2 + 0*16^1 +0*16^0 = 25600.Ketika kompilator membaca 0x6400, Ini memahami angka itu heksadesimal dengan bantuan istilah 0x. Biasanya kita bisa mengerti dengan (6400)16 or (6400)8dasar apa saja ..

Harapan Membantu dalam beberapa cara.

Selamat siang,

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.