计算机中逻辑移位示意图,定点数运算之移位运算(收藏)
一、移位运算
1.移位的意义
移位运算在日常生活中常见。例如15米可写作1500厘米,单就数字而言,1500相当于小数点左移了两位,并在小数点前面添了两个0;同样15也相当于1500相对于小数点右移了两位,并删去了小数点后面的两个0。可见,当某个十进制数相对于小数点左移n位时,相当于该数乘以10n;右移n位时,相当于该数除以10n。
计算机中小数点的位置是事先约定的,因此,二进制表示的机器数在相对于小数点作n位左移或右移时,其实质就便该数乘以或除以2n(n=1,2...n)。
移位运算又叫移位操作,对计算机来说,有很大的实用价值,例如,当计算机没有乘(除)运算线路时,可以采用移位和加法相结合,实现乘(除)运算。
计算机中机器数的字长往往是固定的,当机器数左移n位或右移n位时,必然会使其n位低位或n位高位出现空位。那么,对空出的空位应该添补0还是1呢?这与机器数采用有符号数还是无符号数有关,对有符号的移位叫算术移位。
2.算术移位规则
对于正数,由于[x]原=[x]补=[x]反=真值,故移位后出现的空位均以0添之。对于负数,由于原码、补码和反码的表示形式不同,故当机器数移位时,对其空位的添补规则也不同。下表列出了三种不同码制的机器数(整数或小数均可),分别对应正数或负数,移位后的添补规则。必须注意的是:不论是正数还是负数,移位后其符号位均不变,这是算术移位的重要特点。
不同码制机器数移位后的空位添补规则
码 制
添补代码
正数
原码、补码、反码
0
原码
0
负数
补码
左移添0
右移添1
反 码
1
由上表可得出如下结论:
(1)机器数为正时,不论左移或右移,添补代码均为0。
(2)由于负数的原码其数值部分与真值相同,故在移位时只要使符号位不变,其空位均添0。
(3)由于负数的反码其各位除符号位外与负数的原码正好相反,故移位后所添的代码应与原码相反,即全部添1。
(4)分析任意负数的补码可发现,当对其由低位向高位找到第一个“1”时,在此“1”左边的各位均与对应的反码相同,而在此“1”右边的各位(包括此“1”在内)均与对应的原码相同,即添0;右移时困空位出现在高位,则添补的代码应与反码相同,即添1。
例:设机器数字长为8位(含一位符号位),若A=±26,写出三种机器数左、右移一位和两位后的表示形式及对应的真值,并分析结果的正确性。
解:(1)A=+26=(+11010)2
则[A]原=[A]补
=[A]反=0,0011010
移位结果表示如下:
移位操作
机 器 数
对应的真值
[A]原=[A]补=[A]反
移位前
0,0011010
+26
左移一位
0,0110100
+52
左移两位
0,1101000
+104
右移一位
0,0001101
+13
右移两位
0,0000110
+6
可见,对于正数,三种机器数移位后符号位不变,左移时最高数位丢1,结果出错;右移时最低数位丢1,影响精度。
(2)A=-26=(-11010)2
三种机器数移位结果示于下表。
移位操作
机 器 数
对应的真值
移位前
原
码
1,0011010
-26
左移一位
1,0110100
-52
左移两位
1,1101000
-104
右移一位
1,0001101
-13
右移两位
1,0000110
-6
移位前
补
码
1,1100110
-26
左移一位
1,1001100
-52
左移两位
1,0011000
-104
右移一位
1,1110011
-13
右移两位
1,1111001
-7
移位前
反
码
1,1100101
-26
左移一位
1,1001011
-52
左移两位
1,0010111
-104
右移一位
1,1110010
-13
右移两位
1,1111001
-6
可见,对于负数,三种机器数移位后符号位均不变。负数的原码左移时,高位丢1,结果出错;低位丢1,影响精度。负数的补码左移时,高位丢0,结果出错;低位丢1,影响精度。负数的反码左移时,高位丢0,结果出错;低位丢0,影响精度。
下图示意了机器中实现算术左移和右移操作的硬件框图。其中(a)真值为正的三种机器数的移位操作;(b)负数原码的移位操作;(c)负数补码的移位操作;(d)负数反码的移位操作。
3.算术移位和逻辑移位的区别
有符号数的移位称为算术移位,无符号数的移位称为逻辑移位。逻辑移位的规则是:逻辑左移时,高位移出,低位添0;逻辑右移时,低位移出,高位添0。例如,寄存器内容为01010011,逻辑左移为1010010,算术左移为00100110(最高数位“1”移丢)。又如寄存器内容为10110010,逻辑右移为01011001。若将其视为补码,算术右移为11011001。显然,两种移位的结果是不同的。上例中为了避免算术左移时最高数位丢1,可采用带进位(Cy)的移位,其示意图如下图所示。算术左移时,符号位移至Cy,最高数位就可避免移出。
计算机中逻辑移位示意图,定点数运算之移位运算(收藏)相关推荐
- Java二进制位运算、移位运算、、
为什么80%的码农都做不了架构师?>>> Java二进制位运算.移位运算 思考题 1.请看下面的代码段,回答a,b,c,d,e结果是多少? public static void ...
- Java从入门到精通08-二进制、位运算、移位运算
Java从入门到精通08-二进制.位运算.移位运算 二进制(Binary)数用0和1两个数字及其组合来表示任何数.进位规则是"逢2进1",数字1在不同的位上代表不同的值,按从右到左 ...
- java逻辑移位和算术移位,关于对移位运算的理解
标签: 之前在<计算机组成原理>这门课中学习了很多,其中包括二进制数的移位运算.当时并不理解他们用来作甚,迷迷糊糊的状态,学了都不知道为什么要学.什么东西总是到了需要用到的时候,才明白,哦 ...
- java 位与运算_java中位运算和移位运算详解
一.位运算 (1)按 位 与 & 如果两个相应的二进制形式的对应的位数都为1,则结果为1,记为同1为1,否则为0.首先我们看一下对正数的运算 分别看一下正数和负数的具体运算步骤 正数直接取二进 ...
- 计算机中逻辑运算顺序,【计算机系统】位运算与逻辑运算
计算机系统的位运算与逻辑运算 一.位 1.定义 二进制数字系统中数据存储的最小单位,即每个二进制数0或1就称为位.位也叫比特(bit),8个bit组成一个字节(byte),每个字节表示程序中的某些文本 ...
- Java位运算之移位运算
文章目录 移位运算 左移 << 位运算符 右移 >> 位运算符 无符号右移 >>> 运算符 移位运算 移位运算符在程序设计中,是位操作运算符的一种.移位运算符 ...
- c语言中余数取整,C 逻辑运算, 移位运算 , 取整 , 取模(取余)
一. 按位运算 (快速操作数据的某个位) ^ 按位异或 ~ 按位取反 & 按位与 | 按位或 二. 逻辑运算 && 逻辑与 有一个值为 0 ,值为 0 || ...
- java 二进制反码_Java学习第五篇:二进制(原码 反码 补码),位运算,移位运算,约瑟夫问题...
public classDemo3 {public static voidmain(String[] args) { CycleLinkList cycleLinkList=newCycleLinkL ...
- Java中的位运算符、移位运算
一.位运算 Java中有4个位运算,它们的运算规则如下: (1)按位与 (&) :两位全为1,结果为1,否则为0: (2)按位或 (|) :两位有一个为1,结果为1,否则为0: (3) ...
最新文章
- 阿里云天池 金融风控训练营Task1 广东工业站
- 西北民族大学c语言程序设计复试科目,2016年西北民族大学中国民族信息技术研究院962C语言程序设计复试笔试仿真模拟题...
- AIX errdemon 命令
- Java测试驱动开发--总结
- Django中QueryDict的坑
- apache tomcat php mysql 配置_Apache与Tomcat服务器整合的基本配置方法及概要说明
- 关于跨域的处理的几种方法的整理
- 关于 HSF框架 (一)简单介绍
- 学习外挂 -------- 成长过程(经典推荐)
- CAN总线协议是什么?CAN总线协议有哪些?
- DHCP报文分析(三级网络技术)
- android 手机屏蔽广告 hosts
- java单精度实型变量_C语言中,用关键字( )定义单精度实型变量,用关键字( )定义双精度实型变量。...
- floyd算法----牛栏
- windows无法格式化u盘_如何解决u盘0字节无法格式化的问题
- MATLAB-数字图像处理 量化
- hdu 5956 The Elder
- excel 筛选 粘贴_在筛选的Excel列表中粘贴快捷方式
- 复习七天通过软考高级「系统架构师」,我是如何做到的
- 超算计算机需要显卡吗,NVIDIA:中国超算性能世界第一认了 但省电我最强
热门文章
- 避免重复造轮子,Java 程序员必备
- java 基础 笔试题_非常全面的java基础笔试题
- 手把手教你用Python搭建一个AI智能问答系统!
- 网络基础:socket模块
- java 命令行 配置文件_命令行玩JAVA : 完善ANT的配置文件
- 老树开新花之shellcode_launcher免杀Windows Defender
- 笑谈ArcToolbox (4) ArcToolbox的隐藏关
- 【SQLServer】验证身份证号第18位校验码是否合法
- 文档服务器archive,中央归档服务器简介.pdf
- 计算机毕业设计 SSM养老院管理系统 智慧养老院管理系统 养老院信息管理系统Java Vue MySQL数据库 远程调试 代码讲解