什么是十进制的0x10?

Oma*_*bid 10 c# hex numbers

我有以下代码:

SN.get_Chars(5)
Run Code Online (Sandbox Code Playgroud)

SN是一个字符串所以这应该给第五个字符.好!

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

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

pax*_*blo 86

0xNNNN(不一定是四位数)在C中至少表示十六进制(base-16因为'hex'是6而'dec'在拉丁语派生语言中是10)数字,其中N0通过9A通过的数字之一F(或它们的小写等价物,代表10到15),并且数字中可能有1个或多个这些数字.表示它的另一种方式是NNNN 16.

它在计算机领域非常有用,因为单个十六进制数字代表四位(二进制数字).这是因为四个位,每个位有两个可能的值,总共给出2 x 2 x 2 x 216(2 4)个值.换一种说法:

  _____________________________________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
Run Code Online (Sandbox Code Playgroud)

base-X数是一个数字,其中每个位置代表X的幂的倍数.


在我们人类习惯的基数10中,使用的数字是0通过的9,数字7304 10是:

  • (7 x 10 3)= 7000 10 ; 加
  • (3 x 10 2)= 300 10 ; 加
  • (0 x 10 1)= 0 10 ; 加
  • (4 x 10 0)= 4 10 ; 等于7304.

在八进制中,数字0通过7.数字754 8是:

  • (7 x 8 2)= 448 10 ; 加
  • (5 x 8 1)= 40 10 ; 加
  • (4 x 8 0)= 4 10 ; 等于492 10.

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


在二进制中,数字是01.号码1011 2是:

  • (1 x 2 3)= 8 10 ; 加
  • (0 x 2 2)= 0 10 ; 加
  • (1 x 2 1)= 2 10 ; 加
  • (1 x 2 0)= 1 10 ; 等于11 10.

在十六进制中,数字是0通过9A通过F(表示"数字" 10通过15).数字7F24 16是:

  • (7 x 16 3)= 28672 10 ; 加
  • (F x 16 2)= 3840 10 ; 加
  • (2 x 16 1)= 32 10 ; 加
  • (4 x 16 0)= 4 10 ; 等于32548 10.

你的相对简单的数字0x10,即C代表10 16的方式,就是:

  • (1 x 16 1)= 16 10 ; 加
  • (0 x 16 0)= 0 10 ; 等于16 10.

另外,数字的不同基数用于许多事情.

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


Mic*_*ael 45

0x表示数字是十六进制,或16.

0x10是16.


mdo*_*123 5

简单的版本是 0x 是表示十六进制数字source的前缀。

因此您计算的值位于前缀之后,在本例中为 10。

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

所以你要做的简单数学是

0x10

1 * 16 + 0 = 16
Run Code Online (Sandbox Code Playgroud)

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

另一个例子:

0xF7

15 * 16 + 7 = 247
Run Code Online (Sandbox Code Playgroud)

您可以通过搜索十六进制表来获取值列表。例如,在此图表中,注意 F 对应于 15。