DJ2

您所在的位置:网站首页 二进制数的减法运算规则 DJ2

DJ2

#DJ2| 来源: 网络整理| 查看: 265

目录

一、无符号数的算术运算

1. 加法运算

2. 减法运算

二、有符号数的算术运算

1. 原码运算

2. 补码运算

三、定点数的补码加减运算

1. 基本关系式

2. 补码加减运算规则

四、溢出判断

1. 引入

2. 溢出

3. 溢出的判断方法

五、移位操作

(1)逻辑移位

(2)算术移位

二进制数的运算分类

一、无符号数的算术运算 1. 加法运算

二进制的加法运算遵循法则:0+0=0,0+1=1,1+0=1,1+1=0(有进位)

2. 减法运算

二进制的减法运算遵循法则:0-0=0,1-0=1,1-1=0,0-1=1(有借位) 

二、有符号数的算术运算 1. 原码运算

由上述例题可见,原码加减运算复杂。因为操作数取绝对值运算,所以实际操作不仅取决于操作码(是加还是减),还与操作数的正负有关,并且还可能需要对运算结果进行修正。

而补码运算相对简单,因此在计算机中基本采用补码加减法。

2. 补码运算

补码运算的特点

将减法转换为加法 将真值表示为补码

变补

变补方法:连同符号位变反再加一。

验证方法:分正数、负数情况讨论,直接进行转换即可。

Q:“补码的运算中符号位参与了运算” ?

在补码的运算中为什么符号位可以参与运算?_狂放不羁霸的博客-CSDN博客在补码表示中仍以最高位作为符号位,即0正1负,这点与原码相同。但补码的符号值是由补码定义式计算而得,它是数值的一部分,可以与尾数一起直接参与运算,不需要单独处理。https://blog.csdn.net/m0_64140451/article/details/127181631?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22127181631%22%2C%22source%22%3A%22m0_64140451%22%7D

三、定点数的补码加减运算

操作数用补码表示,符号位参与运算,结果用补码表示。

1. 基本关系式

操作码为 “加” 时,两数直接相加。操作码为 “减” 时,将减转换为加,即将减数变补后与被减数相加。

应用举例

根据基本关系式进行运算,便能得到正确的答案。

2. 补码加减运算规则

这张图说明了进行补码加减运算的流程。

四、溢出判断 1. 引入

在上述六个例子中,由于机器数长度为 5 位,并且由补码表示,因此定点整数表示范围为:-16 ~ 15,运算结果超出这个范围即为溢出。

2. 溢出

① 溢出:运算结果超出机器数的表示范围。

② 正溢:两正数相加绝对值超出允许的表示范围。

③ 负溢:两负数相加绝对值超出允许的表示范围。

3. 溢出的判断方法

符号说明

在补码运算中,符号位将会参与运算。

① 判断逻辑一

溢出的标志是结果的符号 Sf 与两个操作数的符号恰好相反。

只有同号数相加才可能产生溢出,因为一正一负相加,其结果绝对值不可能超过模。

② 判断逻辑二

溢出的标志是符号位进位与尾数最高位进位不同:

Cf 与 C 不同时,有溢出;Cf 与 C 相同时,无溢出。

③ 判断逻辑三

溢出的标志是第一符号位和第二符号位不一致。

单符号位的信息量只能表示两种可能:数为正或为负,如果发生溢出,就会使符号位的含义发生混乱。将符号位扩充为两位,就能判别是否溢出以及正确的结果符号 —— 双符号位表示法。

双符号位表示法00正数11负数

溢出的标志00结果为正,无溢出01结果为正,是正溢10结果为负,是负溢11结果为负,无溢出

不管结果是否有溢出,第一符号位 Sf1 始终能指示运算结果的正负。

原因:若将机器数长度扩充为 6 位,由补码表示,则定点整数表示范围为:-32 ~ 31,上述六个例子的运算结果没有超出这个范围,因此不会发生溢出,即所有运算结果都是正确的。因此,第一符号位 Sf1 始终能指示运算结果的正负。但实际上机器数长度为 4 位,所以上述结果仅作为判断溢出的工具。

采用多符号位的补码又称变形补码,它的实质是扩大了模数 M、增加了数据位的宽度。个人理解,就是扩大了定点整数表示范围,使得运算结果不会发生溢出。

五、移位操作 (1)逻辑移位

主要针对于纯二进制代码 —— 无正负和大小 —— 可能表示的是一个字符。

应用:以串行方式发送数据。

(2)算术移位

数码位置和数值发生变化, 符号位不变。

希望实现的效果:

左移一位,真值乘以二;右移一位,真值除以二。

① 正数补码以及任意数原码的移位规则 

移位规则:数符不变,空位补零。

Q:为什么空位补零?

A:因为我们想达到 希望实现的效果,只有空位补零才能得到想要的结果。

对于单符号位,符号位不变;对于双符号位,第一符号位不变,第二符号位参与移位。

第一符号位和第二符号位其实都是有效数值位,为了达到 希望实现的效果 才进行上述操作。

② 负数补码的移位规则

移位规则:数符不变,左移空位补零,右移空位补一。

Q:为什么左移空位补零,右移空位补一?

A:因为我们想达到 希望实现的效果,只有这样才能得到想要的结果。

对于单符号位,符号位不变;对于双符号位,第一符号位不变,第二符号位参与移位。


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3