我有以下代码:
SN.get_Chars(5)
SN
是一个字符串所以这应该给第五个字符.好!
现在我有另一个代码但是: SN.get_Chars(0x10)
我想知道0x10是什么?这是一个数字吗?如果是这样,那么十进制表示法是什么?
0xNNNN
(不一定是四位数)在C中至少表示十六进制(base-16因为'hex'是6而'dec'在拉丁语派生语言中是10)数字,其中N
是0
通过9
或A
通过的数字之一F
(或它们的小写等价物,代表10到15),并且数字中可能有1个或多个这些数字.表示它的另一种方式是NNNN 16.
它在计算机领域非常有用,因为单个十六进制数字代表四位(二进制数字).这是因为四个位,每个位有两个可能的值,总共给出2 x 2 x 2 x 2
或16
(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
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.
在二进制中,数字是0
和1
.号码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
通过9
和A
通过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个手指的证据:-)
0x表示数字是十六进制,或16.
0x10是16.