算数移位,逻辑移位以及循环移位

简介: 算数移位,逻辑移位以及循环移位

一.算数移位

1.原码的算数移位一一符号位保持不变,仅对数值位进行移位

算数移位是通过改变各个数码位和小数点的相对位置,从而改变各数码位的位权。可用移位运算实现乘法,除法。例如:

1(符号位), 0001010.0= + =-10D

将算数右移(右移后低位舍弃,高位补0):


1, 00101.00--->1,0000101=+=-5D,也就是-10D/2


我们再继续右移


1, 0000010.1--->1,0000010(低位被舍弃)= -2D,这不是-5D的一半


因为舍去了低位的1,这个1代表,所以若舍弃的位=0,则相当于2,若舍弃的位就会丢失精度


同理:


1,0101000=-40D


经过左移得到


1,1010000=-80D


再次左移


1,0100000=-32D,而不是-160D,这是因为7位bit位只能表示0~127的绝对值的范围,这个值已经超出了范围,这样就会出现严重误差。

右移:高位补0,低位舍弃。若舍弃的位=0,则相当于2;若舍弃的位,则会丢失精度


左移:低位补0,高位舍弃。若舍弃的位=0,则相当于X2;若舍弃的位,则会出现严重误差


2.反码的算数移位

正数:


正数的反码与原码相同,因此对正数反码的移位运算也和原码相同。即右移:高位补0,低位舍弃。左移:低位补0,高位舍弃。


负数:

负数的反码数值位与原码相反,因此负数反码的移位运算规则如下:

右移:高位补1,低位舍弃

左移:低位补1,高位舍弃

3.补码的算数移位

正数:

正数的补码与原码相同,因此对正数补码的移位运算也和原码相同。即右移:高位补0,低位舍弃。左移:低位补0,高位舍弃。

负数:

根据补码的规律,最右边的“1”的右边的数与原码一致,左边的数与反码相同,不太熟悉可以看看:

http://t.csdnimg.cn/T0bU6

所以补码的负数的算数移位规则如下:

右移(同反码):高位补1,低位舍弃。

左移(同原码):低位补0,高位舍弃。

总结:

举例:如果想实现-20*7的效果,那么计算机就将不左移,左移1位,左移两位的数进行相加,完成乘法操作。

二.逻辑移位

右移:高位补0,低位舍弃。

左移:低位补0,高位舍弃。

可以把逻辑移位看作是对"无符号数"的算数移位。

例如获取RGB值的过程:

R=102 01100110

G=139 10001011

B=139 10001011

三.循环移位

循环左移后移出的数会被补到最右边

右移同理,循环右移后,右边移出的数会被补到最左边

带进位位的循环移位

循环左移会将原本数值的最高位,移动到进位位CF,并且将原本CF的值,补到最右边

循环右移同理,将数值位的最低位放到CF中,CF的值放到数值位的最高位中

循环移位一般用在大端存储和小端存储转换中,大端存储和小端存储的含义如下:

大端是高字节存放到内存的低地址
小端是高字节存放到内存的高地址

32位int型数0x12345678举例:

循环移位对于16位bit(2个字节)数的大端小端转换中比较有用,直接向左移动8位bit或向右移动8bit即可。


而对于32位bit可以进行如下处理:


1.将整数表示为4个字节,即[0x12, 0x34, 0x56, 0x78]。


2.将这4个字节的位置进行互换,即将第一个字节和最后一个字节交换,将第二个字节和倒数第二个字节交换。


3.调换后的结果为[0x78, 0x56, 0x34, 0x12]。


目录
相关文章
【408计算机组成原理】—移位运算(七)
【408计算机组成原理】—移位运算(七)
|
存储 算法 安全
【加密算法】AES对称加密算法简介
【加密算法】AES对称加密算法简介
|
存储 C语言
大端存储和小端存储
1.大小端字节序 2.大端存储 3.小端存储 4.为什么会有大小端存储模式之分? 5.如何判断当前机器是大端存储还是小端存储 方法1 方法2
4431 0
|
11月前
|
JSON 监控 Java
Elasticsearch 分布式搜索与分析引擎技术详解与实践指南
本文档全面介绍 Elasticsearch 分布式搜索与分析引擎的核心概念、架构设计和实践应用。作为基于 Lucene 的分布式搜索引擎,Elasticsearch 提供了近实时的搜索能力、强大的数据分析功能和可扩展的分布式架构。本文将深入探讨其索引机制、查询 DSL、集群管理、性能优化以及与各种应用场景的集成,帮助开发者构建高性能的搜索和分析系统。
684 0
|
缓存
计算机组成原理的缓存
计算机组成原理中缓存的效率计算、缓存命中率的确定以及Cache与主存地址映射的三种方式:直接映射、全相联映射和组相联映射。
933 1
|
存储 缓存 安全
电脑更换更大硬盘,系统迁移怎么做?
电脑使用多年后,常因硬盘空间不足导致系统卡顿、游戏无法安装。升级更大容量固态硬盘并迁移系统,无需重装系统和软件,普通用户也能轻松在家完成。本文详解操作步骤,手把手教你提升电脑性能与存储空间。
|
传感器 存储 编解码
八叉树建立地图并实现路径规划导航(上)
八叉树建立地图并实现路径规划导航(上)
2647 0
八叉树建立地图并实现路径规划导航(上)
|
网络协议 安全 应用服务中间件
服务器最大支持多少链接数
【10月更文挑战第27天】本文探讨了单台服务器最大支持的链接数,分析了TCP链接标识的四元组、文件句柄限制、端口号范围及多IP绑定等技术细节。结论指出,理论上的最大链接数受制于文件句柄和内存,而链接接收端的链接数可视为无限大。
763 0
|
存储 缓存 JSON
详解HTTP四种请求:POST、GET、DELETE、PUT
【4月更文挑战第3天】
77523 5
详解HTTP四种请求:POST、GET、DELETE、PUT