Các số sử dụng ký hiệu 0x có nghĩa là gì?


107

Không một gì 0xtiền tố vào một số nghĩa là gì?

const int shared_segment_size = 0x6400;

Nó từ một chương trình C. Tôi không thể nhớ nó xcó ý nghĩa gì và đặc biệt là ý nghĩa của bức thư .


2
Tìm kiếm "ký hiệu thập lục phân"
asawyer

2
@asawyer Cảm ơn. Trước khi chọn "0x" dưới dạng thập lục phân, tôi không biết phải tìm kiếm từ đâu.
Terry Li

3
Tìm kiếm 0x prefix C++đưa bạn đến đây ngay bây giờ :)
Carl Smith

Câu trả lời:


111

Chữ số bắt đầu bằng 0xsố nguyên thập lục phân. (cơ số 16)

Số lượng 0x640025600.

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

Ví dụ bao gồm các chữ cái (cũng được sử dụng trong ký hiệu thập lục phân trong đó A = 10, B = 11 ... F = 15)

Số lượng 0x6BF027632.

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

2
Điều tôi băn khoăn là, số âm nên được biểu thị như thế nào trong hệ lục phân? Giống như -0xff hoặc 0x-ff? Tôi đoán là người đầu tiên, nhưng tôi không biết.
Luc

7
@Luc Cái đầu tiên đúng. Mặc dù tôi thường xuyên thấy chỉ 0xffffffffvà như vậy. ( 0xffffffff = -132-bit int giả định bổ sung 2 của)
Mysticial

@Luc Các số phủ định được biểu diễn ở dạng nhị phân bằng cách sử dụng phần bù của 2 - một cách thông minh không yêu cầu dấu '-'. Vì vậy, về cơ bản nó chuyển đổi từ nhị phân sang hex, âm hoặc dương.
Shuvo Sarker

@ShuvoSarker Cảm ơn bạn đã bổ sung! Tuy nhiên, đó chỉ là biểu diễn bộ nhớ, tôi đoán tương tự như nếu chúng ta đồng ý rằng chúng ta có một tập hợp các số từ 0--999 ​​và 1000--1999 sẽ đại diện cho các số âm. Câu hỏi của tôi là về ký hiệu con người có thể đọc được, mặc dù biết cách máy tính làm điều đó có thể giúp ích cho người khác, vì vậy cảm ơn :)
Luc

16

Trong C và các ngôn ngữ dựa trên cú pháp C, tiền tố 0xcó nghĩa là hệ thập lục phân (cơ số 16).

Do đó, 0x400 = 4 × (16 2 ) + 0 × (16 1 ) + 0 × (16 0 ) = 4 × ((2 4 ) 2 ) = 2 2 × 2 8 = 2 10 = 1024, hoặc một nhị phân K .

Và do đó 0x6400 = 0x4000 + 0x2400 = 0x19 × 0x400 = 25K


10

Đó là một số thập lục phân.

0x6400 chuyển thành 4 * 16 ^ 2 + 6 * 16 ^ 3 = 25600


8

Các số bắt đầu bằng 0xhệ thập lục phân (cơ số 16). 0x6400đại diện cho 25600.

Để chuyển đổi,

  • nhân chữ số cuối cùng với 1
  • thêm chữ số thứ hai vào cuối nhân lần 16 (16 ^ 1)
  • thêm chữ số cuối cùng của thứ ba nhân với 256 (16 ^ 2)
  • thêm chữ số cuối cùng thứ tư nhân với 4096 (16 ^ 3)
  • ...và như thế

Các hệ số 1, 16, 256, v.v. là lũy thừa tăng dần của 16.

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

hoặc là

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

7

ĐƠN GIẢN

Đó là một tiền tố để cho biết số ở dạng thập lục phân chứ không phải ở một số cơ số khác. Ngôn ngữ lập trình C sử dụng nó để nói với trình biên dịch.

Thí dụ :

0x6400dịch thành 6*16^3 + 4*16^2 + 0*16^1 +0*16^0 = 25600.Khi trình biên dịch đọc 0x6400, Nó hiểu số là hệ thập lục phân với sự trợ giúp của số hạng 0x. Thông thường chúng ta có thể hiểu theo (6400)16 or (6400)8hoặc bất kỳ căn cứ nào ..

Hy vọng được giúp đỡ trong một số cách.

Ngày tốt,

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.