移位运算(计算机组成原理15)

移位运算(计算机组成原理15)三种移位运算的方法:算数移位+逻辑移位+循环移位

大家好,又见面了,我是你们的朋友全栈君。

移位运算

视频链接地址:
https://www.bilibili.com/video/BV1BE411D7ii?from=search&seid=6420326887479343502

前言

在本篇中,你将掌握

  • 三种移位运算的方法:算数移位+逻辑移位+循环移位

在这里插入图片描述
对于定点数其表示有两种:无符号数和有符号数,其中有符号数又有原码、反码、补码、移码四种,本篇将学习四种码的运算。

在计算机中,使用移位便可实现 乘除法 = 移位 + 加法

1 移位运算

在这里插入图片描述

1.1 算数移位

算数移位,理解好位权和负数特殊的移位补位就可以掌握

1.1.1 原码的算数移位

在这里插入图片描述
对于原码的算数移位:
  符号位不变,数值位右移,如上图。高位补0,低位舍弃,若舍弃的位=0,则相当于 ÷ 2;若舍弃的位=1,则会丢失精度,如 2 − 1 2^{-1} 21
  符号位不变,数值位左移,同理。低位补0,高位舍弃,若舍弃的位=0,则相当于 × 2;若舍弃的位=1,则会出现严重误差(舍弃了最高位的1)

1.1.2 反码的算数移位

在这里插入图片描述
反码的算数移位,如上图,注意:
  正数的反码 = 原码,移位同原码
  负数的反码 = 原码数值位取反,负数反码移位运算规则为
    右移:高位补1,低位舍弃
    左移:低位补1,高位舍弃

1.1.3 补码的算数移位

在这里插入图片描述
  正数的补码 = 原码,移位同原码
  负数的补码 = 原码数值位取反+1,负数补码移位运算规则为
    右移:同反码,高位补1,低位舍弃
    左移:同原码,低位补0,高位舍弃

1.1.4 算数移位小结

在这里插入图片描述

  1. 正数的原码 = 补码 = 反码,补位都用0补
  2. 负数的反码 = 原码数值位取反,补码 = 原码数值位取反+1
      负数反码,补位补1
      负数补码,左移补0,右移补1

1.2 逻辑移位

在这里插入图片描述

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

1.3 循环移位

在这里插入图片描述
循环移位,二进制数在移位过程中不丢弃,像是一个队列一样头变尾或尾变头,循环移位很适合把一个数据的高低字节调换(中文字节的大端存储:高字节+低字节,小端存储:低字节+高字节)

2 小结

在这里插入图片描述
本篇重点,算数移位的具体实现步骤(三种码的补位规则)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/158682.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • hql中不能写count(1)能够写count(a.id)

    hql中不能写count(1)能够写count(a.id)

    2022年1月27日
    59
  • nginx指令详解_考试说明全解

    nginx指令详解_考试说明全解常见的命令有:nginx-sreopen#重启Nginxnginx-sreload#重新加载Nginx配置文件,然后以优雅的方式重启Nginxnginx-sstop#强制停止Nginx服务nginx-squit#优雅地停止Nginx服务(即处理完所有请求后再停止服务)nginx-t#检测配置文件是否有语法错误,然后退出nginx-?,-h#打开帮助信息nginx-v#显示版本信息并退出nginx-V#显示版本和配置选项信息,然后退出

    2025年5月25日
    3
  • 电子元件-电阻

    本内容包括可调电位器的介绍,电阻率与温度系数,高精密电阻介绍,热敏电阻、压敏电阻、碳膜电阻与金属膜电阻介绍等。

    2022年4月8日
    57
  • 笔记《Thinking in Java》第2章 一切都是对象[通俗易懂]

    笔记《Thinking in Java》第2章 一切都是对象[通俗易懂]第二章一切都是对象1.数据可以存在哪寄存器。因为它在CPU内部,所以最快。但是Java无法直接控制它。栈。在RAM上,但是,CPU可以通过栈指针快速的分配存储,向下就分配新内存,向上就释放内存,所以速度很快。代价是,Java系统必须确切的知道数据在栈里的生命周期,所以灵活性有限。Java的对象引用存在这。堆。也是在RAM上,不过跟栈比,编译器不用知道数据在堆里的生命周期,所以在堆里分配…

    2022年7月8日
    23
  • C 调用 dll 文件

    C 调用 dll 文件一 先使用 C 来创建一个 dll 文件 1 创建新项目 CreateDll012 选择 动态链接库 dll 文件 3 在 CreateDll01 cpp 源文件中添加如下代码 CreateDll01 cpp 定义 DLL 应用程序的导出函数 include stdafx h extern C declspec dllex

    2025年6月17日
    3
  • 详解正则表达式实现二代身份证号码验证[通俗易懂]

    详解正则表达式实现二代身份证号码验证[通俗易懂]二代身份证号码:1-6位:表示行政区划的代码。1、2位,所在省(直辖市,自治区)代码;3、4位,所在地级市(自治州)代码;5、6位,所在区(县,自治县,县级市)的代码;7-14位:表示出生年、月、日15-16位:所在地派出所代码17位:性别。奇数(1、3、5、7、9)男性,偶数(2、4、6、8、0)女性18位:校验位,存在十一个值:0,1,2,3,4,5,6,7,8,9,X,其值…

    2022年6月27日
    36

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号