二进制
计数法
二进制(Binary System)是一种以2为基数的数制,只使用两个数字符号:0和1,每个数字称为一个比特(Bit,Binary digit的缩写),这是最基本的数位系统之一,其发现者是莱布尼茨
定义
位值计数法
位值计数法是一种数字记数方式,数位上数字的大小不仅取决于它本身的值(数字符号),还取决于它在整个数中所处的位置(位次)。每一位上的数值由两部分构成:
· 数位符号(如 09、01 等)
· 位权(该位对应的基数幂次)
其基本原理为:
设某个数是用r进制表示的,形式如下:
那么它的实际数值为:
其中:
· r 是进制的基数(如二进制是2,十进制是10)
· 是各个位上的数字(必须小于r)
这种记数方式是当前世界上最普遍使用的数字系统原理,包括十进制、二进制、八进制十六进制等,都是基于位值计数法建立的。
二进制计数
二进制计数
二进制数据是采用位值计数法,其位权是以2为底的。例如二进制数据110.01,逢2进1,其权的大小顺序为、、、、。
对于有n位整数,m位小数的二进制数据用加权系数展开式表示,可写为 :
其中表示二进制数据
【例】:将二进制数据111.01写成加权系数的形式。
解:
运算
加法
基本规则:
· 0 + 0 = 0
· 0 + 1 = 1
· 1 + 0 = 1
· 1 + 1 = 10(即进位)
减法
基本规则:
· 0 - 0 = 0
· 1 - 0 = 1
· 1 - 1 = 0
· 0 - 1 = 1(借位)
乘法
基本规则:
· 0×0 = 0
· 1×0 = 0
· 0×1 = 0
· 1×1 = 1
除法
基本规则:
· 0÷1 = 0
· 1÷1 = 1
实例
两个二进制数1001与0101的算数运算可表示为:
二进制与其他进制的转换
二进制转换为十进制
二进制转十进制的过程就是按位展开并计算每一位上的数值。其基本公式为:
例如,将二进制数 1101.101 转换为十进制:
十进制转换为二进制
将十进制整数部分转为二进制,通常采用 除2取余法:
1. 将整数除以2,记录余数。
2. 将商继续除以2,直到商为0。
3. 余数从下往上排列,得到二进制数。
对于小数部分,使用 乘2取整法:
1. 将小数部分乘以2,记录整数部分。
2. 将小数部分继续乘以2,直到得到精确的二进制表示或达到一定精度。
例如,十进制数 13.625 转换为二进制:
1. 整数部分:13 转换为二进制:
· 13 ÷ 2 = 6 余 1
· 6 ÷ 2 = 3 余 0
· 3 ÷ 2 = 1 余 1
· 1 ÷ 2 = 0 余 1
· 从下往上,得到 1101。
2. 小数部分:0.625 转换为二进制:
· 0.625 × 2 = 1.25 → 记录 1
· 0.25 × 2 = 0.5 → 记录 0
· 0.5 × 2 = 1.0 → 记录 1
· 得到 0.101。
因此,13.625 转换为二进制是 1101.101。
二进制转十六进制
二进制转十六进制可以通过分组的方式来实现。将二进制数从右向左每四位分为一组,分别转换为对应的十六进制值。
例如,二进制数 110101111001 转换为十六进制:
1. 从右向左分组:1101 0111 1001
2. 转换每一组:
· 1101 → D
· 0111 → 7
· 1001 → 9
因此,110101111001 转换为十六进制是 D79。
十六进制转二进制
十六进制转二进制也是通过直接将每个十六进制位转为对应的四位二进制数:
· 0 → 0000
· 1 → 0001
· 2 → 0010
· 3 → 0011
· 4 → 0100
· 5 → 0101
· 6 → 0110
· 7 → 0111
· 8 → 1000
· 9 → 1001
· A → 1010
· B → 1011
· C → 1100
· D → 1101
· E → 1110
· F → 1111
例如,十六进制数 D79 转换为二进制:
· D → 1101
· 7 → 0111
· 9 → 1001
因此,D79 转换为二进制是 110101111001。
二进制转八进制
将二进制数每三位分为一组,从右向左,补齐不足三位,得到对应的八进制数。
例如,二进制数 1101011111001 转换为八进制:
1. 从右向左分组:1 101 011 111 001
· 补齐为:001 101 011 111 001
2. 转换每一组:
· 001 → 1
· 101 → 5
· 011 → 3
· 111 → 7
· 001 → 1
因此,110101111001 转换为八进制是 15371。
计算机采用二进制原因
物理基础
电子计算机基于晶体管电路等电子元件工作,这些元件有两种明显、易区分的状态:
· 通电(高电平) → 表示“1”
· 断电(低电平) → 表示“0”
二进制恰好能映射这两种状态,具有天然的兼容性。
稳定可靠
由于二进制只需分辨两种状态,因此在噪声干扰下依然能保持较高的准确性。相比于十进制或其他进制,二进制系统对误差的容忍度更高,更适合电子环境。
运算简便
逻辑运算(如与、或、非、异或等)在二进制下可用简单的逻辑门电路实现,电路结构更简单,速度更快,功耗更低。
适合存储与通信
二进制信息可通过开/关、强/弱、黑/白等方式表现,非常适合编码、存储与传输。例如:
· CD/DVD 的坑/平面
· 网络通信中的高低电平
· Morse 电码的点/划
二进制的发展历史
1. 莱布尼茨的贡献
二进制在现代数学中首次被正式提出是在17世纪。德国数学家戈特弗里德·威廉·莱布尼茨(Gottfried Wilhelm Leibniz)在1703年发表的论文《二进制系统的理性思考》中系统地介绍了二进制数系统。他认为,二进制不仅仅是一种数学工具,还与自然界的基本结构和哲学原理息息相关。
莱布尼茨受到了中国《易经》中的二元思想的启发,他认为,二进制系统能有效地表达“有”与“无”(1与0)的对立。莱布尼茨的二进制系统最终成为了计算机科学的理论基础。
2. 19世纪的布尔代数与二进制
19世纪中期,英国数学家乔治·布尔(George Boole)提出了布尔代数,并在其代数中系统地应用了“真与假”的思想(即0与1)。布尔代数为后来的数字电路、计算机科学的逻辑运算提供了理论支持。
布尔代数中的基本运算(如与、或、非等)都可以用二进制来表示,布尔代数的应用让二进制数更加广泛地影响到数字逻辑和计算机设计的领域。
3. 计算机科学的奠基:20世纪初
20世纪初期,随着电子计算机的发明和发展,二进制作为数字电子设备的核心计算语言开始得到实际应用。在计算机硬件设计中,二进制以其“0”与“1”两种状态(电流的通与断、磁场的正负等)在计算机中得到了自然的映射。
查尔斯·巴贝奇(Charles Babbage)和艾达·洛芙莱斯(Ada Lovelace)提出了可以进行自动计算的机械设备和程序概念,虽然他们的计算机模型并未得到实现,但为后来的计算机发展奠定了基础。
1940年代,随着第一代计算机(如ENIAC、UNIVAC等)的诞生,二进制被用作计算机的基础数据表示语言。计算机内部的“开/关”状态与二进制“0/1”之间的对应关系,使得二进制成为理想的选择。
4.电子计算机与二进制的广泛应用:20世纪中期至今
在20世纪50年代,随着晶体管的发明和集成电路的出现,电子计算机变得更加小型化、可靠化、廉价化。这些计算机普遍使用二进制系统进行数据存储、运算和控制。
数字电路设计:电子元件(如晶体管)具有两种工作状态:通电和断电,分别对应二进制的1和0。这种“开”和“关”状态的明确区分,使得二进制特别适用于计算机硬件设计。
冯·诺依曼架构:约翰·冯·诺依曼(John von Neumann)提出的计算机架构,广泛使用二进制数来存储数据和指令。这一架构成为现代计算机的基础,并广泛应用于各种计算机中。
集成电路与现代计算机:现代计算机中的每个基本单元(如位、字节、寄存器)都基于二进制。在现代计算机中,所有的算术运算、逻辑运算和数据存储都是基于二进制的。
二进制编码
在计算机科学中,二进制编码用于将字符、符号、数字等信息转换为二进制格式。二进制编码系统是计算机进行数据存储、处理和传输的基本方式。常见的二进制编码标准包括 ASCII、Unicode 和 BCD(Binary-Coded Decimal)。这些编码标准允许计算机对文本、符号、数字等进行统一的表示和处理。【3】
1. ASCII编码
ASCII 是美国信息交换标准代码,是一种基于拉丁字母的字符编码标准,用于表示文本数据。它使用7位二进制数来表示字符,最多可以表示128个字符(包括字母、数字、标点符号、控制字符等)。
ASCII包含了英文字母(大写和小写)、数字(0-9)、控制字符(如回车、换行等)和一些常用符号。其中,大部分字符使用0-127之间的数值表示。
示例:
65,其二进制表示为 01000001。
97,其二进制表示为 01100001。
ASCII编码标准较为简洁,但仅适用于英文字符和一些基本符号,无法支持其他语言字符,因此出现了更为通用的编码方式,例如 Unicode。
2. Unicode编码
Unicode 是一种国际标准字符编码方案,旨在统一全球所有文字、符号和标记的编码,支持多种语言的字符。Unicode的出现解决了ASCII在多语言环境中的不足,支持数百万个字符。
Unicode定义了一个全球字符集,可以表示世界上几乎所有的语言符号,包括中文、日文、阿拉伯文、俄文等。Unicode不仅包含了字符,还包括了表情符号、数学符号等。
编码方式:Unicode的编码方式非常灵活,常见的编码方式有:
UTF-8:变长编码,最常用于Web中。它使用1到4个字节来表示字符。
UTF-16:使用2到4个字节来表示字符,广泛用于Windows操作系统中。
UTF-32:每个字符固定使用4个字节,能表示所有Unicode字符,但效率较低。
Unicode编码示例:
U+0041,表示为二进制是 00000000 01000001。
U+6C49,表示为二进制是 00000000 01101100 01001001。
Unicode编码的优点:
· 支持全球几乎所有的语言和符号。
· 使不同语言的系统之间能够交换数据,避免了字符编码的不兼容问题。
· 在现代编程语言和操作系统中,Unicode是标准编码方式。
3. BCD编码
BCD(Binary-Coded Decimal)是一种用于数字的二进制编码方式,它将每个十进制数字单独表示为4位二进制数。BCD编码在计算机中广泛用于表示和处理十进制数字,尤其在数字显示设备(如电子表格、计数器、财务应用等)中应用广泛。
基本原理:
在BCD编码中,每一个十进制数字(0到9)都用4位二进制表示。例如,十进制数 7 被编码为二进制数 0111,十进制数 5 被编码为 0101。
BCD编码的示例:
· 十进制数字 97 使用BCD编码为:
9 → 1001
7 → 0111
因此,97的BCD编码为 1001 0111。
· 十进制数字 45 使用BCD编码为:
4 → 0100
5 → 0101
因此,45的BCD编码为 0100 0101。
4.其他二进制编码应用
图像:像素颜色值通过 RGB 等模型表示为二进制序列。
声音:模拟音频经采样量化后转为二进制数据流。
指令编码:CPU 指令集中的机器码也由二进制表示,控制硬件执行操作。
参考资料
最新修订时间:2025-12-31 12:22
目录
概述
定义
参考资料