【计算机组成原理】定点数的移位运算

您所在的位置:网站首页 移位有什么用 【计算机组成原理】定点数的移位运算

【计算机组成原理】定点数的移位运算

#【计算机组成原理】定点数的移位运算| 来源: 网络整理| 查看: 265

22计算机考研交流总QQ群:1032995316

课程咨询微信号|容嬷嬷(csky-rmm)

一、移码表示法

Q:为什么要叫做移码呢?

A:移码常用来表示浮点数的阶码。它只能表示整数。

移码就是在真值X上加上一个常数(偏置值),通常这个常数取2,相当于X在数轴上向正方向偏移了若干单位,这就是“移码”一词的由来。

Q:那移码又是什么呢?

A:移码定义为[x]移= 2+x(其中x大于等于-2,小于2;机器字长为n+1)

阶码的定义:

我们之前了解的原码,反码和补码都是针对定点数而言,而移码常用于表示浮点数的阶码。相信一些同学对于阶码的概念还有些陌生:所谓阶码是指在机器中表示一个浮点数时需要给出指数,这个指数用整数形式表示,这个整数叫做阶码,阶码指明了小数点在数据中的位置。当阶码为固定值时,数的这种表示法称为定点表示,这样的数称为“定点数”;当阶码为可变时,数的这种表示法称为浮点表示,这样的数称为“浮点数”。

那现在用例子来解释移码的定义:若正数x1=+10101,x2=-10101,字长为8位,则移码表示为:[x1]移=2+10101=1,0010101;[x2]移=2+(-10101)=0,1101011。

移码的特点:

1)移码中零的表示唯一。

2)一个真值的移码和补码仅差一个符号位,[x]补的符号位取反即得[x]移(“1”表示正,“0”表示负,这与其他机器数符号位取值正好相反),反之亦然。

3)移码全0时,对应真值最小值-2;移码全1时,对应真值的最大值2-1。

4)移码保持数据原有大小顺序,移码大真值就大,移码小真值就小。

二、定点数的移位运算

学习了原码,补码,反码,移码的概念,当然还是要应用起来啦!我们主要应用原码,补码,反码进行移位运算,加减运算,乘除运算。现在就从最简单的移位运算开始吧!

通过思维导图我们可以看到移位运算主要分为算术移位,逻辑移位和循环移位三种方式:有符号数的移位称为算术移位,逻辑移位的操作对象是逻辑代码,可以视为无符号数,我们就依次来了解学习。

三、算术移位

※ 算术移位的对象是有符号数,在移位过程中符号位保持不变。

※ 我们知道正数的原码,补码,反码与真值相同,即[x]原=[x]补=[x]反=真值,因此移位后出现的空位均以0添之。

※ 对于负数,由于原码、补码、反码的表示形式不同,因此当机器数移位时,对其空位的添补规则也不同。

这里我们需要注意:不论是正数还是负数,移位后其符号位均不变!

这里我们用原码的算术移位给大家演示一下负数的算术移位:

可以看出在进行算术右移时符号位是没有移动的,深蓝色的代表数值位,数值位就依次右移一位,然后空余的位被填充为0。

四、逻辑移位

※ 逻辑移位将操作数视为无符号数,移位规则:逻辑左移时,高位移丢,低位添0;逻辑右移时,低位移丢,高位添0。

※ 注意:逻辑移位不管是左移还是右移,都添0。

循环移位

※ 循环移位分为带进位标志位CF的循环移位(大循环)和不带进位标志位的循环移位(小循环)。

※ 循环移位的主要特点是,移出的数位又被移入数据中,而是否带进位则要看是否将进位标志位加入循环位移。例如,带进位位的循环左移就是数据位连同进位标志位一起左移,数据的最高位移入进位标志位CF,而进位位则依次移入数据的最低位。

相信大家也发现了一个问题:算术移位和逻辑移位中不管是左移还是右移,原始数值位都会有二进制数被移出丢弃。但循环移位的二进制数在移位过程中不丢弃,这也使循环移位操作特别适合将数据的低字节数据和高字节数据互换。

最后通过题目来巩固下知识吧!

1.补码定点整数0101 0101左移两位后的值为()。

A. 0100 011

B. 01010100

C. 0100 0110

D. 0101 0101

解析:我们可以发现这个补码定点整数符号位为0,得知是正数,根据算术补码移位规则,正数左右移位都添0,符号位不变。

2.补码定点整数10010101右移一位后的值为()。

A. 0100 1010

B. 0100 1010 1

C. 1000 1010

D. 1100 1010

解析:现在补码符号位为1,得知是负数,根据算术补码移位规则,负数右移添1。

微信公众号:冯强计算机与软工考研



【本文地址】


今日新闻


推荐新闻


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