为什么十六进制数的前缀是“0*”

why heaxadecimal numbers are prefixed with "0* "

而不是写ffff为什么写十六进制数的语法像0*ffff.What是“0*”的意思。它指定了什么吗? 无论如何,A、B、C、D、E、F 符号仅在十六进制数字系统中。那么“0*”需要什么。

抱歉,“*”不是我认为的字符 "x"。 它是十六进制数字系统的命名法还是符号法。

我不知道你在说什么语言,但是如果你用 C# 写

var ffffff = "Some unrelated string";
...
var nowYouveDoneIt = ffffff;

你希望发生什么?编译器如何知道 ffffff 指的是十进制数 16777215 的十六进制表示还是前面定义的字符串变量?

由于标识符(在 C# 中)不能以数字开头,以 0 和一些其他字符为前缀(在 C# 中是 0xffffff 或十六进制,二进制 IIRC 是 0b11111111111111111111111111111111111111)是一种方便的方式来传达数字的基数文字在.

编辑:另一个问题,如果你要写 var myCoolNumber = 10,你怎么知道这意味着 2、10 还是 16?或者完全是其他东西。

它在那里表示数字为 heX。不是'*',实际上是'x'。

参见:

http://www.tutorialspoint.com/cprogramming/c_constants.htm

通常是 0xFFFF:字母,而不是乘法符号。

至于为什么0x只是最常见的约定,就像某些编程语言允许二进制文件以0b为前缀一样。仅以 0 作为前缀的数字通常保留给八进制或基数 8;他们想要一种方法来告诉机器以下数字是十六进制的,或者以 16 为底(10 != 0b10 [2] != 010 [8] != 0x10 [16])。为了人类可读性的目的,他们通常在识别八进制时省略了一个小的 'o'。

有趣的是,我遇到的大多数基于程序集的实现都使用(或至少允许使用)0h 代替或同时使用。