1. Decimalism(十进制)

我们平时使用的数字都是由【09】共十个数字组成的,例如 1、9、10、297、952 等,一个数字最多能表示九,如果要表示十、十一、二十九、一百等,就需要多个数字组合起来。 例如表示 5+8 的结果,一个数字不够,只能“进位”,用 13 来表示; 这时“进一位”相当于十,“进两位”相当于二十。 因为逢十进一,也因为只有【09】共十个数字,所以叫做十进制(Decimalism)。 进制也就是进位制。在进行加法(减法)运算时,逢X进(借)一就是X进制,这种进制也就包含X个数字,基数为X。十进制有0~9共10个数字,基数为10,在加减法运算中,逢十进一,借一当十。

2. Binary(二进制)

那么可以用0、1两个数字来表示数值,这就是二进制(Binary)。

二进制只有0和1两个数字,基数为2,在加减法运算中,逢二进一,借一当二。

表示数值:0、1、10、111、100、1000001

加法:1+0=1、1+1=10、10+110=1000、111+111=1000

减法:1-0=1、10-1=1、100-11=1、1010-101=101

十进制 4321 二转十 1101=13 二转十 110.11=6.75 二进制加法:0001 + 0001 = 0010

二进制减法:0010 - 0001 = 0001

2.1. 八进制与十六进制

除了二进制,编程中也经常使用八进制和十六进制。
八进制有07共8个数字,基数为8,逢八进一,借一当八;十六进制中,用A来表示10,B表示11,C表示12,D表示13,E表示14,F表示15,因此有0F共16个数字,基数为16,逢16进1,借1当16。例如:
八进制 3072 = 3×83 + 0×82 + 7×81 + 2×80 = 1536 + 0 + 56 + 2 = 1594
十六进制 E3F9 = 14×163 + 3×162 + 15×161 + 9×160 = 57344 + 768 + 240 + 9 = 58361

十进制二进制八进制十六进制十进制二进制八进制十六进制
000010101012A
111111101113B
2102212110014C
3113313110115D
41004414111016E
51015515111117F
61106616100002010
71117717100012111
8100010818100102212
9100111919100112313

二进制、八进制、十进制、十六进制的对应关系

在C语言中,八进制通常以“0”开头(注意是数字 0,而不是字母 o),例如 0307;十六进制通常以“0x”或“0X”开头(不区分大小写),例如 0xE27 或 0X89F。

下面请看八进制和十六进制加法运算的两个例子。

这是选学内容,如果你只想了解八进制和十六进制,不希望深入研究它们的运算,请忽略这部分内容,不会影响后边的学习。

  1.  八进制加法:0107 + 0274 = 0403

十六进制加法:0XA2B + 0X276 = 0XCA1

2.2. 计算机表示

计算机要处理的信息是多种多样的,如十进制数、文字、符号、图形、音频、视频等,这些信息在人们的眼里是不同的。但对于计算机来说,它们在内存中都是一样的,都是以二进制的形式来表示。

要想学习编程,就必须了解二进制,它是计算机处理数据的基础。

内存条是一个非常精密的部件,包含了上亿个电子元器件,它们很小,达到了纳米级别。这些元器件,实际上就是电路;电路的电压会变化,要么是 0V,要么是 5V,只有这两种电压。5V 是通电,用1来表示,0V 是断电,用0来表示。所以,一个元器件有2种状态,0 或者 1。

我们通过电路来控制这些元器件的通断电,会得到很多0、1的组合。例如,8个元器件有 28=256 种不同的组合,16 个元器件有 216=65536 种不同的组合。虽然一个元器件只能表示 2 个数值,但是多个结合起来就可以表示很多数值了。

我们可以给每一种组合赋予特定的含义,例如,可以分别用 1101000、00011100、11111111、00000000、01010101、10101010 来表示 C、语、言、中、文、网 这几个字,那么结合起来 1101000 00011100 11111111 00000000 01010101 10101010 就表示”C语言中文网“。

一般情况下我们不一个一个的使用元器件,而是将 8 个元器件看做一个单位,即使表示很小的数,例如 1,也需要8个,也就是 00000001。

1 个元器件称为 1 比特(bit)或 1 位,8 个元器件称为 1 字节(Byte),那么 16 个元器件就是 2 Byte,32 个就是 4 Byte,以此类推: 8×1024 个元器件就是 1024 Byte,简写为1KB; 8×1024×1024 个元器件就是 1024 KB,简写为1MB; 8×1024×1024×1024 个元器件就是 1024 MB,简写为1GB。单位转换 8 bit = 1 Byte 1024Byte = 1KB 1024KB = 1MB 1024MB = 1GB 1024GB = 1TB* 所以,计算机使用二进制,而不是我们熟悉的十进制,写入内存中的数据,都会被转换成 0 和 1 的组合。