CS207 Chapter 1
Chapter 1 二进制数 Binary Numbers
二进制数 Binary Numbers
数字系统 Digital Systems
- 所有的计算都有一个特殊用途的数字计算机嵌入,数字系统可以代表/操纵离散的信息,例如10进制信号,26个字母。数字(Digit)=>数字信号(Digital)(计算机,系统 等)
- 在数字系统中,输入是由开关进行的,通常含有以下两种离散值,高电位(HIGH),低电位(LOW),这种信号被称为数字信号,设备内的电路被称为数字电路。
进制 Number System
有几种我们通常使用的进制。
十进制:0,1,2,…,9。
二进制:0,1。
八进制:0,1,2,…,7。
十六进制:0,1,2,…,9,A,B,…,F。
在十进制系统中,我们有10个不同的数字,但在二进制系统中只有两个。二进制数字系统更容易被处理。在数字世界中,我们用二进制思考问题,一盏灯要么关要么开。…而我们用两个数字来表达一切:0和1。一个十进制的$25_{10}$在二进制中变成$11001_{2}$。
进制转换 Conversion between binary and hexadecimal
需要将m进制转换为n进制,则先将m进制转换为十进制,再转换为n进制,十进制是关键。
任何$X$进制的数字,小数点左边n个数字,右边m个数字可以被展开为十进制:
$(a_na_{n-1}…a_2a_1b_1b_2…b_m)_X$
$(a_nX^{n-1}+a_{n-1}X^{n-2}+…+a_1X^0+b_{1}X^{-1}+b_2X^{-2}+…+b_mX^{-m})$
十进制转别的进制:
- 整数部分:除法,取余,重复
- 小数部分:乘进制数,取整数位,重复
二进制转八进制:每三位分割转化为十进制数。
二进制转十六进制:每四位分割转化为十进制数。
补码和反码 Complements
反码 diminished radix complemen $r-1’s$
- 对于r进制数字的补码,用r-1减去每一位,例如$12345_{10}$,反码为$99999 - 12345 = 87654$
补码 radix complement $r’s$
- 先计算反码,然后加1 ,例如$12345_{10}$,补码为$99999-12345+1 = 87655$
二进制减法
- 三个方法:借位法,反码法,补码法
补码法
如要计算$M-N$:
- 如果$M\geq N$:
把N的补码加到M上然后去掉进位。例如$72532-3250$:
$M=72532, N_补=96750, M+N_补=169282, 减去进位169282-100000=69282$
- 如果$M<N$:
把N的补码加到M上然后取补码加负号。例如$3250-72532$:
$M=03250, N_补=27468, M+N_补=30718, 取补码69282, 加负号结果为-69282$
带符号的二进制数 Signed binary numbers
生活中有很多场景会用到正数负数,但数字系统用二进制去代表一切,所有有三种表示方法:符号表示、反码(1’s)表示,补码(2’s)表示
符号表示 Sign-magnitude representation
通常多一个bit叫做sign bit,简称MSB。
- 通常来讲,0作为正号,1作为负号
- 例如一个8-bit带符号二进制数字$01101001_2$代表一个正数$105_{10}$,$11101001_2$代表一个负数$-105_{10}$。
反码和补码表示 $1’s$ and $2’s$ complement representation
- 反码表示,两个数字都是彼此的反码例如$0111_2$代表$+7_{10}$,$1000_2$代表$-7_{10}$,正数MSB为0,负数MSB为1
- 补码表示,1被加到反码表示法中$0111_2$代表$+7_{10}$,$1001_2$代表$-7_{10}$,正数MSB为0,负数MSB为1
二进制编码 Binary codes
只有在知道数据所用的编码时候,才有可能对数据进行解释。例如1000010在直二进制中表示66(十进制),在BCD中表示42(十进制),在ASCII代码中表示字母B。
二进制编码的十进制(8421) Binary-Coded decimal (BCD)
简称BCD,用4bit来编码每个10进制数字,在数字系统中很方便使用。例如$35_{10}$使用$0011$ $0101$来表示,而不是$100011_2$。同时它也被称为8421编码,因为这是BCD编码中4个bit分别的权重。例如用BCD编码表示69.27: $ 69.27_{10}=01101001.00100111_{BCD} $
BCD加减法 BCD addition & subtraction
- 先用一般法则将两数相加/减,如果得出小于9则会产生一个合理的的BCD数字
- 如果产生了大于9的数字则会产生进位,这是不合理的,此时在加上十进制的$6_{10}$或二进制下的$0110_{2}$来跳过6个不合理的数,然后把进位放到下一组4bit数中(可以是已经存在的,也可以是新的一组)
- 例如:$0111_{BCD} + 1001_{BCD}$:$0111+1001=10000,$ $10000+0110=00010110_{BCD}$
格雷码 Gray code
- 两位数字之间只有一位发生了变化
检错码 Error-detction codes
- 二进制信息在介质中传导时会有所损失或噪音,检错码就是用于检验传输过程中的错误码。错误不可以被更正,它的目的是检测
- 奇偶检验位:数据中1是奇数就是1,反之是0,使数据中的1的个数始终为奇数
检和 Checksum
- 奇偶检验会在双数错误时失效,因此我们使用Checksum。在传输一串数据A之后又传输了B,那么会有一个Check Sum为A与B的二进制数据相加,如果又传输了C,则加上C的二进制数据。在数据传输完成后传输Check Sum,在接收端完成同样的操作,如果接收端的Check Sum和发射端的最后一个Check Sum相同,则数据无错
ASCII
许多计算机的应用程式不止需要处理数字,需要处理字符,因此需要了ASCII码(Aemrican Stantdard Code for Information Interchange)用7个bit来编码128个字符。
二进制存储和寄存器 Binary storage and registers
- 二进制信息必须以物理形式存在,一个单元(Cell)必须拥有两种稳定的状态来代表0和1,寄存器就是一组二进制单元。寄存器之间传输并储存二进制信息
二进制逻辑 Binary logic
- 二进制逻辑是用逻辑运算处理两个分离的值
- 三种基础的逻辑运算:AND OR NOT
- 逻辑门是一种处理一个或多个输入来产生输出的电路元件,多于两个的输入也是ok的
- 电压操作,在一个范围内,但被解释为两个值中的任何一个。例如高电位位1,低电位为0。