0x00000000十六进制表示什么?

18

我一直被教导0-9代表零至九的值,A、B、C、D、E、F代表10-15。

我看到了这种格式0x00000000,它似乎不符合十六进制的规律。是否有指南或导师可以解释一下?

我搜索了十六进制的资料,但找不到任何解释。

因此我的第二个问题是,0x00000000格式有没有名称?


4
0x0000 是一个十六进制数。前缀 0x 表示该数应该使用十六进制而不是十进制进行计算。如果没有这个前缀,你就无法知道 15 是十进制还是十六进制(或八进制)。这是你所想要知道的内容吗? - Felix Kling
有没有这种特定格式的名称,还是我必须在谷歌中输入十六进制,希望能找到这种格式? - nhat
2
@nhat 0x 是标准的十六进制前缀,它只是告诉你接下来的数字将是十六进制。不需要进行谷歌搜索(只需利用您对十六进制的了解并记住该前缀即可)。 - jzworkman
使用Android市场上的任意进制计算器来进行进制转换:https://play.google.com/store/apps/details?id=com.ewe.radixcalculator - zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
5个回答

27

0x只是告诉你后面的数字将以十六进制表示

所以0x00表示0,0x10表示16,0x11表示17等等


1
@nhat,它不是按照个位数计算的,每个位置都是16的因子,所以对于你的情况,它是8*16或128,因为8在16的位置上。 - jzworkman
我注意到0x00000080 = 0x0080。格式让我感到困惑,但是经过更多的研究,它开始变得更有意义了。 - nhat
@nhat 是的,所有前导零都可以省略,因为它将该16的幂乘以零,这不会改变结果。 - jzworkman

14

0x 只是一个前缀(在 C 和许多其他编程语言中使用),表示以下数字是以 16 进制为基数。

其他用于十六进制的符号包括:

$ABCD
ABCDh
X'ABCD'
"ABCD"X

很酷,谢谢你提供的信息。我以前从未见过这些格式。你是从哪个特定的网站学到的呢? - nhat
我在互联网出现之前就已经使用了所有这些符号,所以没有特定的网站。 - Greg Hewgill
1
PHP程序员会将任何以$开头的内容视为变量,而不是十六进制值。 - Arjan
@Arjan:这就是为什么PHP不使用“$”来表示十六进制的原因。 - Greg Hewgill

6

是的,这是十六进制。

否则,例如无法表示A。 C和Java编译器将把它视为变量标识符。添加前缀0x告诉编译器它是一个十六进制数,因此:

int ten_i = 10;
int ten_h = 0xA;

ten_i == ten_h; // this boolean expression is true

前导零表示大小:0x0080 表示数字将存储在两个字节中;而 0x00000080 表示四个字节。这种表示法通常用于标志:如果设置了某个位,那么该功能就已启用。
附注:如果数字以 0 开头,则会被解释为八进制数,例如 010 == 8。这里的 0 也是一个前缀。

4

在x之后的所有内容都是十六进制数字(0x只是前缀,表示十六进制),代表32位(如果您将0xFFFFFFFF转换为二进制,则为1111 1111 1111 1111 1111 1111 1111 1111)。


1

十六进制数字通常以0x为前缀表示它们是十六进制数字。 在这种情况下,有8个数字,每个数字代表4位,因此是32位或一个字。我猜你在错误中看到了这个值,它是一个内存地址。这个值意味着空,因为十六进制值为0。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接