【问题标题】:why heaxadecimal numbers are prefixed with "0* "为什么十六进制数字以“0*”为前缀
【发布时间】:2015-11-07 07:13:42
【问题描述】:

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

对不起,“*”不是我认为是“x”的字符。 它是十六进制数字系统的命名法还是表示法。

【问题讨论】:

    标签: binary hex decimal


    【解决方案1】:

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

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

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

    由于标识符(在 C# 中)不能以数字开头,因此以 0 和其他字符为前缀(在 C# 中,它是 0xffffff 或十六进制,而二进制 IIRC 是 0b1111111111111111111111111)是传达数字字面量基数的便捷方式在。

    编辑:另一个问题,如果您要写 var myCoolNumber = 10,您将如何知道这意味着 2、10 还是 16?或者完全是别的东西。

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        【解决方案3】:

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

        见:

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

        【讨论】:

          猜你喜欢
          • 2011-02-09
          • 2020-07-23
          • 1970-01-01
          • 2016-11-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-07-02
          • 2016-03-15
          相关资源
          最近更新 更多