1. 数据表示与位运算基础
在计算机科学中,理解数据的表示方式是基础中的基础。就像建筑师需要了解砖块的特性才能建造稳固的房子一样,程序员也需要深入理解计算机如何表示和处理数据。
1.1 进位计数制解析
1.1.1 进位计数制的核心概念
进位计数制就像是我们日常使用的数字语言,它由几个关键部分组成:
-
数码:这是数字的基本符号,相当于字母表中的字母。在十进制中,我们的数码是0-9;在二进制中,只有0和1两个数码。
-
基数:决定了这个数字系统使用多少个不同的数码。十进制基数是10,二进制是2,十六进制是16。
-
位权:每个位置代表的价值。在十进制中,从右到左依次是个位(10⁰)、十位(10¹)、百位(10²)等。
-
位数:数字在数中的位置,从右到左从0开始编号。
举个例子,十进制数1234可以这样分解:
- 数码:1、2、3、4
- 位数:3(千位)、2(百位)、1(十位)、0(个位)
- 基数:10
- 位权:10³、10²、10¹、10⁰
1.1.2 为什么计算机使用二进制
计算机偏爱二进制不是没有原因的:
- 物理实现简单:电子器件很容易表示两种稳定状态(开/关、高/低电压)
- 逻辑运算方便:0和1正好对应逻辑假和真
- 运算电路简单:用基本的逻辑门电路就能实现算术运算
实际工程中,我们经常需要在不同进制间转换。理解这些转换原理对调试程序和优化算法很有帮助。
1.2 进制转换实战技巧
1.2.1 任意进制转十进制
方法很简单:按位权展开求和。公式为:
Σ(数码×基数^位数)
例如二进制1101.101转十进制:
1×2³ + 1×2² + 0×2¹ + 1×2⁰ + 1×2⁻¹ + 0×2⁻² + 1×2⁻³ = 13.625
1.2.2 二进制与八/十六进制互转
这是程序员最常用的转换之一,技巧是分组转换:
- 二进制→八进制:每3位一组
- 二进制→十六进制:每4位一组
例如:
二进制11010110 → 八进制:011 010 110 = 3 2 6
二进制11010110 → 十六进制:1101 0110 = D 6
1.2.3 十进制转其他进制
这里有两个方法:
