使用0x表示法的数字是什么意思?


107

什么是一个0x上一个号码前缀是什么意思?

const int shared_segment_size = 0x6400;

它来自C程序。我不记得这是什么x意思,尤其是这封信的含义。


2
搜索“十六进制表示法”
asawyer

2
@asawyer谢谢。在选择十六进制的“ 0x”之前,我不知道从哪里搜索。
Terry Li

3
搜索0x prefix C++现在带您到这里:)
卡尔·史密斯

Answers:


111

以开头的文字0x是十六进制整数。(以16为基)

这个数字0x640025600

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

对于包含字母的示例(也用于十六进制表示法,其中A = 10,B = 11 ... F = 15)

这个数字0x6BF027632

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

2
我想知道的是,负数应如何用十六进制表示?像-0xff或0x-ff?我想第一个,但我不知道。
吕克(Luc)

7
@Luc第一个是正确的。虽然我更经常看到正义之0xffffffff类的东西。(0xffffffff = -1对于32位int假设为2的补码)
Mysticial 2013年

@Luc负数使用2的补码表示为二进制,这是一种巧妙的方式,不需要'-'号。因此,它基本上是从二进制转换为十六进制,从负数到正数。
Shuvo Sarker

@ShuvoSarker感谢您的加入!不过,这只是内存表示,我想这与我们是否同意我们拥有一组从0--999​​的数字和1000--1999代表负数的情况类似。我的问题是关于人类可读的表示法,尽管知道计算机如何做到这一点可能会对其他人有所帮助,所以谢谢:)
吕克

16

在C和基于C语法的语言中,前缀0x表示十六进制(以16为底)。

因此,0x400 = 4×(16 2)+ 0×(16 1)+ 0×(16 0)= 4×((2 42)= 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或任何基础来理解..

希望以某种方式有所帮助。

美好的一天,

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.