Skip to content

附录A 计数系统

本章概述

本附录介绍计算机中常用的计数系统,包括二进制、八进制、十进制和十六进制,以及它们之间的相互转换方法。

A.1 十进制数

十进制(Base-10)是最常用的计数系统,使用数字0-9。

十进制说明
0-9个位数字
每进一位乘以10

示例:

123 = 1×10² + 2×10¹ + 3×10⁰
    = 100 + 20 + 3

A.2 二进制数

二进制(Base-2)使用数字0和1,是计算机的基础。

特点说明
数字范围0-1
C++11前缀0b
每进一位乘以2

C++中表示:

cpp
int binary1 = 0b1010;      // 二进制(= 10)
int binary2 = 0b11111111;  // 二进制(= 255)

转换示例:

0b1010 = 1×2³ + 0×2² + 1×2¹ + 0×2⁰
       = 8 + 0 + 2 + 0
       = 10

A.3 八进制数

八进制(Base-8)使用数字0-7。

特点说明
数字范围0-7
前缀0(如 017)
每进一位乘以8

C++中表示:

cpp
int octal = 017;   // 八进制
int decimal = 15;  // 十进制(017 = 1×8 + 7 = 15)

A.4 十六进制数

十六进制(Base-16)使用数字0-9和字母A-F。

数字十六进制值数字十六进制值
0-90-9A10
B11C12
D13E14
F15

C++中表示:

cpp
int hex1 = 0x1A;   // 十六进制
int hex2 = 0xFF;   // 十六进制(= 255)

A.5 二进制和十六进制对照表

二进制和十六进制的转换很方便,每4位二进制对应1位十六进制:

十六进制二进制十六进制二进制
0000081000
1000191001
20010A1010
30011B1011
40100C1100
50101D1101
60110E1110
70111F1111

转换示例:

0x1A = 0001 1010 (二进制)
     = 26 (十进制)

A.6 进制转换方法

十进制转其他进制

cpp
// 十进制转二进制(除2取余)
int dec = 10;
// 10 / 2 = 5 余 0
// 5 / 2 = 2 余 1
// 2 / 2 = 1 余 0
// 1 / 2 = 0 余 1
// 结果:1010

// C++中使用流控制符
cout << dec << endl;   // 10
cout << oct << dec << endl;   // 12
cout << hex << dec << endl;   // a

其他进制转十进制

cpp
// 二进制转十进制
int bin = 0b1010;  // = 10

// 八进制转十进制
int oct = 012;     // = 10

// 十六进制转十进制
int hex = 0xA;     // = 10

基于 VitePress 构建