微机原理:计算机中的数字与码制(5,6节课)

目录

简介

    1.1数制及其转换

    (1)十进制

      (2)二进制 

      (3)十六进制 

2.2 数制的转换 

       (1)十进制数转换成其他进制数

       (2)其他进制数转换成十进制数(位置加权法)

3.3二进制数的运算

1. 算术运算:

2. 逻辑运算 :

3.寄存器的出现原因:

4.有符号数的表示与运算:

1. 原码表示法:

 2. 补码表示法:

3. 有符号数运算的溢出问题:


简介

数据是信息的载体,是计算机保存和处理的对象。微机中的信息包括数值数据和文字、
声音、图像、视频等非数值数据。计算机是典型的数字设备,它只能识别高低电平,分别
用“ 1 ”和“ 0 ”表示,即二进制,因此计算机中的各种信息,其表现形式无论是数值还是
非数值,都必须以二进制码的形式来表示。本节主要介绍数制及其转换、二进制数的运算、
有符号数的表示与运算、实数的表示、非数值数据的编码等内容
(计算机只识别二进制,用户写的10进制都要变成二进制才能被电脑识别)

    1.1数制及其转换

 1.数制

数制是人们利用一组固定的数码或符号来表示数的方法。数制中所使用的数码或符号 的个数称为数制的基数,例如,十进制用 10 个数字(09)表示,二进制用 2 个数字(01) 表示,十六进制用 10 个数字和 6 个符号(ABCDEF)表示。某一数制表示的数中 每一位所处的级别称为权值,任意进制数 x 都可由其每一位数码及相应权值形成的多项式 来表示:

 其中,b 为基数; 为每一位的数码。可以看出数 x 包含整数 n1

位,小数 m 位,式( 1.1 )也称为数值的按权值展开。

    (1)十进制

日常生活中,人们通常使用十进制数[在数字后加“ D ”( Decimal )表示,也可省略], 例如,257 369.2D 可以按式( 1.1)分别表示为

微机原理:计算机中的数字与码制(5,6节课)_第1张图片

      (2)二进制 

        在计算机中,数值都是用二进制来表示的。二进制数可以用 0 1 数字后加 B ( Binary )
 表示,例如, 1010 1B 可以按权值展开成
   

      (3)十六进制 

        为书写表示方便,通常将 4 位二进制数看作 1 位十六进制数,这时用数字 0 9 和符号 A~ F 表示,并在十六进制数后加 H ( Hexadecimal )表示。在书写十六进制数时,如果最高 位是字符,则要在其前面加上 0 ,以便与标识符区别开来。这样我们有
                              0AH = 1010B 0BH = 1011B 0CH = 1100B
                              0DH = 1101B 0EH = 1110B 0FH = 1111B

十六进制数也可以表示成权值展开的形式

微机原理:计算机中的数字与码制(5,6节课)_第2张图片

2.2 数制的转换 

       同一个数值可以用各种数制来表示,某一数值可在不同数制之间进行转换。

       (1)十进制数转换成其他进制数

将十进制数 N 分成两部分:整数部分 z 和纯小数部分 f 。设要将十进制数 z · f 转换成 b
进制数,则整数部分 z 采用除 b (b就是其他的进制数) 取余的方法,即

微机原理:计算机中的数字与码制(5,6节课)_第3张图片

其中,Z1,Z2 ......Zn为商,y1,y2...yn为余数,[ ]表示取整运算,当Zn=0 时迭代过程终止,这样

得到的y1,y2...yn就是 b 进制数的各位数字, y 1 为最低位, y n 为最高位。
1.1 将十进制数 125 转换成二进制数。
解:转换过程为

微机原理:计算机中的数字与码制(5,6节课)_第4张图片

 因此,1251111 101B

纯小数部分 f 采用乘以 b 取整的方法,即

微机原理:计算机中的数字与码制(5,6节课)_第5张图片

其中,r1,r2,...rm为取整的结果,f1,f2,f3...fm为小数部分。fm =0 时迭代过程终止,这样得到的

 r1,r2...rm就是 b 进制数的各位数字,r 1为最高位, rm 为最低位。

1.2 将十进制数 0.6875 转换成二进制数。

微机原理:计算机中的数字与码制(5,6节课)_第6张图片

因此,0.68750.1011B 

       (2)其他进制数转换成十进制数(位置加权法)

      将任意进制数变换成十进制数,可以按照权值进行展开,例如:

微机原理:计算机中的数字与码制(5,6节课)_第7张图片

3.3二进制数的运算

1. 算术运算:

为书写方便,经常将二进制数写成十六进制形式,因此这里主要讨论二进制数和十六
进制数的算术运算规则。二进制数加法运算采用逢二进一,减法运算采用借一做二;十六
进制数加法运算采用逢十六进一,减法运算采用借一做十六,在乘除法运算时,也采用类
似的规则。例如
微机原理:计算机中的数字与码制(5,6节课)_第8张图片

2. 逻辑运算 :

二进制数的逻辑运算是位对位的运算,即本位运算结果不会对其他位产生任何影响,
这一点与算术运算是截然不同的。二进制数的逻辑运算有四种:与( AND )、或( OR )、异或
( XOR )和非( NOT ),其规则如表 1.1 所示。
微机原理:计算机中的数字与码制(5,6节课)_第9张图片
例如:
1001 0111B AND 0011 1000B 0001 0000B
1001 0111B OR 0011 1000B 1011 1111B
1001 0111B XOR 0011 1000B 1010 1111B
利用逻辑运算可以完成特定的操作, AND 运算可以对指定位进行清零, OR 运算可以
对指定位进行置 1 XOR 运算可以对指定位进行取反。例如,对 x 的第 0 3 位清零操作:
x AND 1111 0110B ;对 x 的第 1 2 位置 1 操作: x OR 0000 0110B ;对 x 的第 3 7 位取反
操作: x XOR 10001000B

3.寄存器的出现原因:

 数据都放在外部的存储器中的话,每次cpu都要经过总线去取,取是要花时间的,所以,我们为了加快运算速度,在CPU内部设置寄存器来暂存一部分数据,寄存器数量越多,暂存的数据越多,我们运算的速度越快。寄存器输量越多,CPU体积越大,为了综合考虑,CPU内部设置了少量的寄存器。8086CPU是16位,内部的寄存器也是16位的,但是我们一般处理数据都是字节型的8位,所以16位寄存器也可以暂存8位数据,也可以有8位寄存器。两个8位合起来就是一个16位寄存器,

AH,AL,高八位,低八位寄存器,合起来也叫AX(16位寄存器)

8086CPU8位字节型寄存器就这八个。这八个也是唯一能拼接成16位寄存器的,

后面同理  BH+BL=BX    ......CX .......DX

微机原理:计算机中的数字与码制(5,6节课)_第10张图片

4.有符号数的表示与运算:

利用二进制数来表示有符号数时,必须有一位用来表示符号位,一般采用最高位表示,
如图 1.3 所示。这样表示的数称为机器数,其实际值称为机器数的真值
微机原理:计算机中的数字与码制(5,6节课)_第11张图片
1. 原码表示法:

       除符号位外,剩余 7 位就是真值的绝对位,这种表示方法称为原码表示法。例如,
1011 001B 表示成 0101 1001B ,- 1011 001B 表示成 1101 1001B ,这种表示方法的优点是
直观,但加减运算时比较麻烦。例如,在对两个数进行加法运算时,应该先对其符号进行
判断,如果同号,则进行相加运算,如果异号,则实际上应该进行相减运算。
       另外,对于特殊值 0 有两种表示:+ 0 表示成 0000 0000B –0 表示成 1000 0000B ,但
实际上, 0000 0000B 1000 0000B 表示同一个值 0
 2. 补码表示法:
计算机中有符号数采用二进制补码表示, x 的补码 [X]补 定义为
其中, n 为机器字长,这种计算一个数补码的过程称为求补运算。从式( 1.2 )可以看出,当
x 为正数时,其补码与原码一致,只有当 x 为负数时,才有求补码的问题。以 n = 8 为例,
12 的原码和补码表示均为 0000 1100B ,而 –12 的补码表示为 [–12] = –12 + 2^ 8 = 244 =
1111 0100B 需要注意的是,式( 1.2)等号右边的数按无符号数对待,即转换后的二进制数
最高位也表示数值。
如何理解补码的定义呢?其实补码的本质就是用全集中的补 集来表示负数。现以钟表上的时间为例来介绍补码,如图 1.4 所示。

微机原理:计算机中的数字与码制(5,6节课)_第12张图片

1.4 钟表时间示意图

首先引入“模”的概念,“模”是指一个计量系统的计量范围,例如,钟表的计量范围为 0~11,即模为 12。现欲将时针调整到 9 点, 可以顺时针调整 9h,也可以逆时针调整 3h。若规定顺时针为正, 逆时针为负,则+9 –3 的调整效果是相同的。也就是说,在模为 12 的系统中,凡是减 3 运算都可以用加 9 来代替,即–3 可以用+9 来表示因为它们互为补数,以此类推。

补码的定义是计算补码的主要方法,除了用定义求补码外,还有两种简便的计算方法。 

( 1 )由原码求补码。负数 x 的补码由其原码取反(符号位除外)再加 1 得到,即

如果对负数 x 的补码再求补码,则可以得到其原码表示,即

 

( 2 )由相反数求补码。对负数 x 求补码,可先求出 x 的补码,然后按位取反(含符号位)
再加 1 ,即
微机原理:计算机中的数字与码制(5,6节课)_第13张图片

1.3 –15 的补码表示。

微机原理:计算机中的数字与码制(5,6节课)_第14张图片 

3. 补码运算规则

有符号数以补码形式表示以后,便可以将加减运算整合为统一的加法运算,具体运算
规则如下
微机原理:计算机中的数字与码制(5,6节课)_第15张图片
该式表明:当两个有符号数采用补码形式表示时, /减法运算可以把符号位同数
值位一起参与运算(因为补码最高位是数值位)(若符号位(最高位)有进 / 借位,则丢掉),其结果为两数之和 /差的补码表示。
例如:
(+ 57 )+(+ 45 ) = 0011 1001B+0010 1101B=0110 0110B ( +102 )
(+ 57 )+(- 45 ) = 0011 1001B+1101 0011B=[1]0000 1100B (进位舍弃,+ 12 )
(- 57 )+(- 45 ) = 1100 0111B+1101 0011B=[1]1001 1010B (进位舍弃,- 102 )
(+ 57 )-(+ 45 ) = 0011 1001B 0010 1101B=0000 1100B ( +12 )
(+ 57 )-(- 45 ) = 0011 1001B 1101 0011B=[1]0110 0110B (借位舍弃,+ 102 )
(- 57 )-(- 45 ) = 1100 0111B 1101 0011B=[1]1111 0100B (借位舍弃,- 12 )
( 3 )用加法完成相减运算。

 

微机原理:计算机中的数字与码制(5,6节课)_第16张图片

3. 有符号数运算的溢出问题:

微机原理:计算机中的数字与码制(5,6节课)_第17张图片

当两个有符号数进行加减运算时,如果运算结果超出了该字长可表示的有符号数的范
围,就会发生溢出,这时结果就会出错。显然溢出只发生在两个同符号数相加或者两个异
符号数相减的情况下。
有符号数的溢出规则如下。
( 1 )在加法运算时,如果次高位(数值最高位)相加形成进位,而最高位(符号位)相加(包
括次高位的进位)却没有进位,则结果溢出;如果次高位无进位,而最高位有进位,则结果
溢出。
( 2 )在减法运算时,如果次高位不需借位,而最高位需借位,则结果溢出;如果次高位
需借位,而最高位不需借位,则结果溢出。
CPU 中专门设置了一个记录有符号数运算是否溢出的标志 OV,当加减运算溢出时,溢出标志位会自动置 1

你可能感兴趣的:(微机原理,学习)