【问题标题】:What is 0x10 in decimal?十进制的0x10是什么?
【发布时间】:2010-10-16 02:11:06
【问题描述】:

我有以下代码:

SN.get_Chars(5)

SN 是一个字符串,所以这应该是第 5 个字符。好的!

现在我有另一个代码但是:SN.get_Chars(0x10)

我想知道 0x10 是什么?是数字吗?如果是这样,那么十进制是什么?

【问题讨论】:

标签: c# numbers hex


【解决方案1】:

0xNNNN(不一定是四位数字)至少在 C 中表示一个十六进制数(基数为 16,因为在拉丁衍生语言中,'hex' 是 6,而 'dec' 是 10)数字,其中 N09AF 的数字之一(或它们的小写等效项,代表 10 到 15),并且数字中可能有 1 个或多个这些数字。表示它的另一种方式是 NNNN16

它在计算机世界中非常有用,因为一个十六进制数字代表四位(二进制数字)。这是因为四位,每一个都有两个可能的值,总共为您提供 2 x 2 x 2 x 216 (24) 个值。换句话说:

  _____________________________________bits____________________________________
 /                                                                             \
+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
| bF | bE | bD | bC | bB | bA | b9 | b8 | b7 | b6 | b5 | b4 | b3 | b2 | b1 | b0 |
+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
 \_________________/ \_________________/ \_________________/ \_________________/ 
      Hex digit           Hex digit           Hex digit           Hex digit

以 X 为底的数是一个数字,其中每个位置代表 X 的幂的倍数。


在我们人类习惯的以 10 为底的情况下,使用的数字是 09,数字 730410 是:

  • (7 x 103) = 700010 ;加
  • (3 x 102) = 30010 ;加
  • (0 x 101) = 010 ;加
  • (4 x 100) = 410 ;等于 7304。

八进制,其中数字为07。数字 7548 是:

  • (7 x 82) = 44810 ;加
  • (5 x 81) = 4010 ;加
  • (4 x 80) = 410 ;等于 49210

C 中的八进制数字前面有字符 0,因此 0123 不是 123,而是 (1 * 64) + (2 * 8) + 3,或 83。


二进制,其中数字是01。数字 10112 是:

  • (1 x 23) = 810 ;加
  • (0 x 22) = 010 ;加
  • (1 x 21) = 210 ;加
  • (1 x 20) = 110 ;等于 1110

以十六进制表示,其中数字为 09AF(代表“数字”1015)。数字 7F2416 是:

  • (7 x 163) = 2867210 ;加
  • (F x 162) = 384010 ;加
  • (2 x 161) = 3210 ;加
  • (4 x 160) = 410 ;等于 3254810

你比较简单的数字0x10,也就是C代表1016的方式,就是:

  • (1 x 161) = 1610 ;加
  • (0 x 160) = 010 ;等于 1610

顺便说一句,不同的数字基数用于许多事情。

  • 如前所述,我们手上有 10 个数字的人使用 base 10。
  • base 2 被计算机使用,因为用电路表示两个二进制状态相对容易。
  • base 8 几乎专门用于 UNIX 文件权限,因此每个八进制数字代表二进制权限的 3 元组(读/写/执行)。它还用于基于 C 的语言和 UNIX 实用程序中,用于将二进制字符注入到其他可打印字符的数据流中。
  • base 16 是一种将 4 位表示为一个数字的便捷方式,尤其是现在大多数架构的字长都是 4 位的倍数。
  • base 64 用于对邮件进行编码,以便可以仅使用可打印字符发送二进制文件。每个数字代表六个二进制数字,因此您可以将三个 8 位字符打包成四个 6 位数字(文件大小增加 25%,但保证可以不受影响地通过邮件网关)。
  • 作为一个半有用的 sn-p,base 60 来自一些非常古老的文明(巴比伦、苏美尔、美索不达米亚或类似的东西),并且是 60 秒/分钟的分钟/小时,360 度的来源圆,60 分钟(弧),等等 [与计算机行业没有真正的关系,但仍然很有趣]。
  • 作为一个更没用的 sn-p,The Hitchhikers Guide To The Galaxy 中的终极问题和答案是“当你将 6 乘以 9 时你会得到什么?”和“42”。虽然同样说这是因为地球计算机有故障,但其他人认为这是创造者有 13 个手指的证据:-)

【讨论】:

  • +1 表示彻底性和数学课,但不要忘记可怜的旧 base-2 ;-)
  • 我不喜欢权威地谈论我知之甚少的事情。可能是巴比伦人、苏美尔人或美索不达米亚人——据我所知,你也可以说是伊拉克人。我会把它留给历史爱好者(我对古代历史的兴趣是足够的,但并不全面)。
  • 伊拉克并不完全属于“古代历史”,因为它始建于 20 世纪 :-)
  • @EddieD,我的意思是它们都在同一个区域。我想。我的地理比我的历史差得多:-)
  • @Louis:我老了,年轻的学徒,但我不是 5000 岁 :-) 看看en.wikipedia.org/wiki/Sexagesimal - 他们似乎认为这是因为 60 有很多因素。
【解决方案2】:

0x 表示数字是hexadecimal,或以 16 为基数。

0x10 是 16。

【讨论】:

    【解决方案3】:

    简单的版本是 0x 是一个前缀,表示一个十六进制数,source

    所以你计算的值是前缀之后,在这个例子中是10。

    但这不是数字 10。最高有效位 1 表示十六进制值,而 0 表示单位。

    所以你要做的简单数学是

    0x10

    1 * 16 + 0 = 16
    

    注意 - 您使用 16 是因为十六进制是 16 基数。

    另一个例子:

    0xF7

    15 * 16 + 7 = 247
    

    您可以通过搜索十六进制表来获取值列表。例如在这个chart 通知中,F 对应于 15。

    【讨论】:

      【解决方案4】:

      这是一个十六进制数,是十进制的 16。

      【讨论】:

        【解决方案5】:

        请注意,“10”是该基数中基数的表示:

        10 在 base-2 中是 2(十进制)

        10 在 base-3 中是 3(十进制)

        ...

        10 是以 10 为底的 10(十进制)

        ...

        10 是 base-16(十六进制)中的 16(十进制)

        ...

        10 是以 1024 为底的 1024(十进制)

        ...等等

        【讨论】:

          猜你喜欢
          • 2011-04-29
          • 1970-01-01
          • 2011-03-10
          • 1970-01-01
          • 2021-08-17
          • 1970-01-01
          • 1970-01-01
          • 2014-01-07
          • 2020-06-13
          相关资源
          最近更新 更多