【发布时间】:2015-11-07 07:13:42
【问题描述】:
为什么不写ffff,为什么写十六进制数的语法是0*ffff。“0*”是什么意思。它指定了什么吗? 无论如何,A、B、C、D、E、F 符号仅在十六进制数系统中。那么“0*”需要什么。
对不起,“*”不是我认为是“x”的字符。 它是十六进制数字系统的命名法还是表示法。
【问题讨论】:
为什么不写ffff,为什么写十六进制数的语法是0*ffff。“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 是 0b1111111111111111111111111)是传达数字字面量基数的便捷方式在。
编辑:另一个问题,如果您要写 var myCoolNumber = 10,您将如何知道这意味着 2、10 还是 16?或者完全是别的东西。
【讨论】:
通常是 0xFFFF:字母,而不是乘法符号。
至于为什么,0x 只是最常见的约定,就像某些编程语言允许二进制文件以0b 为前缀一样。以 0 为前缀的数字通常保留给八进制或以 8 为基数;他们想要一种方法来告诉机器以下数字是十六进制的,或者以 16 为基数(10 != 0b10 [2] != 010 [8] != 0x10 [16])。为了便于阅读,它们通常会在识别八进制时省略一个小“o”。
有趣的是,我遇到的大多数基于汇编的实现都使用(或至少允许使用)0h 代替或同时使用。
【讨论】:
【讨论】: