本章均对整数进行操作,小数情况请先转化为整数并对其符号位。

使用如下数据:

1.加法

正数+正数
正数+负数
负数+负数

通过计算可以发现,补码的加法运算可以直接相加,但在有时会产生进位,因此在编写硬件电路时推荐将两个加数进行符号位拓展,拓展为位数较多数字的位宽,运算结果预先拓展为该位宽+1。事实上多拓展符号位队运算结果也不会产生影响,如下:
注意原码的拓展原则是在符号位后补充0。经上述实验可知,符号位的拓展对运算结果没有影响。
ps.补码的益处判定

最高位进位与次高位进位相同——没有溢出
最高位进位与次低位进位不同——有溢出

2.减法

减法不作赘述了,将被减数转化为其相反数的补码进行加法运算即可。

3.乘法

正数*正数


注意不要忘记符号位。最后的位宽应该是7bit(115除去符号位的位宽)+5bit(23除去符号位的位宽)+1(符号位) = 13bit,有符号数运算时刻要记得符号位的处理。

正数*负数

最高位(符号位)的部分积符号位为1切取补码,这个用个简单的数来算吧


负数*正数

被乘数为负数(补码),每一个部分部分积都要符号位扩展


负数*负数

第一种方法,将以上两种 方法结合起来;

第二种方法,直接转成正数再做运算。

4.除法

将除数转为分数进而转化为小数,再将小数转化为正数*2^n次方,之后做乘法后右移n位即可。

二进制数的补码及运算(2)相关推荐

  1. 二进制数的补码及运算

    本人研究不深,如有错误请不吝赐教!! 先来个最基本的介绍 参考: https://blog.csdn.net/jdq8576/article/details/82425265 百度百科:https:/ ...

  2. 二进制数的补码及运算(1)

    本人研究不深,如有错误请不吝赐教!! 1.正数的补码表示 正数的补码 = 原码 负数的补码 = {原码符号位不变} + {数值位按位取反后+1}    or = {原码符号位不变} + {数值位从右边 ...

  3. 定点补码加减法运算_计算机相关问题:谈谈我眼中的补码

    导读:补码是如何产生的.计算机如何表示负数. 1.前提认知 (1)计算机中只有加法器,加减法使用的都是加法器,同时计算机通过加法器左移累加实现乘法运算.右移累减实现除法运算. (2)补码是一种编码格式 ...

  4. 原码、反码、补码及其运算

    原码.反码.补码及其运算 一.补码举例说明 二.原码.反码.补码的运算 计算机中的数据都是以补码的形式存放和计算的,所以要弄明白到底什么是补码? 一.补码举例说明 假设现在是5点钟,但表却显示10点钟 ...

  5. 原码、反码、补码的运算 【2分钟掌握】

    最近在学计算机组成原理,又遇到了原码.反码.补码的运算. 就整理了运算规则,方便以后复看,减少时间浪费. 简介 原码:符号位 + 数值位 反码:反码是原码和补码之间转化的工具,是个桥梁作用. 补码:补 ...

  6. c或c++语言什么时候用补码来运算,C/C++(基础编码-补码详解)

    两个数的交换 1.引入第三者. 2.求和运算,求差.(这样会产生内存溢出) 3.异或运算 a = a^b; b = a^b; a = a^b; 8b(bit位) = 1B(Byte=字节)//最小单位 ...

  7. 创建带头结点单链表实现二进制数加1的运算

    题目描述: 建立一个带头结点的线性链表,用以存放输入的二进制数,链表中每个结点的data域存放一个二进制位.在此链表上实现对二进制数加1的运算,并输出运算结果. 测试数据1: 1010011 测试数据 ...

  8. 用链表实现对二进制数加1的运算

    题目描述: 建立一个带头结点的线性链表,用以存放输入的二进制数,链表中每个结点的data域存放一个二进制位.并在此链表上实现对二进制数加1的运算. 问题分析: ①建链表:二进制数可用带头结点的单链表存 ...

  9. 建立一个带头结点的线性链表,用以存放输入的二进制数,链表的每一个节点的data域存放一个二进制位。并在此链表上实现对二进制数加1的运算;

    1.题目:建立一个带头结点的线性链表,用以存放输入的二进制数,链表的每一个节点的data域存放一个二进制位.并在此链表上实现对二进制数加1的运算: 部分函数调用参考:https://blog.csdn ...

最新文章

  1. 「OKR 理论篇」5 分钟快速掌握 OKR 管理法
  2. CentOS7重新生成 /boot/grub2/grub.cfg
  3. AndroidStudio取消撤销、AS取消撤销;Ctrl+Shift+Z;
  4. 华字后面配什么字比较好_女孩叫华什么名字好听 华字和什么字搭配取名最好...
  5. js 学习笔记(一)
  6. 一个C/S结构的优秀例子: 延迟补偿在C/S架构游戏协议设计和优化中的应用
  7. 开始创建你的第一个 Flutter 应用
  8. 大数据之_数据采集Flume_Flume介绍---Flume工作笔记001
  9. android基础入门生命周期(1)
  10. 多媒体计算机教室的使用与管理,多媒体教室计算机管理论文
  11. english 后缀
  12. Oracle数据仓库参考架构
  13. openlayers地图坐标转换为屏幕像素坐标,屏幕像素坐标转成地图实际坐标
  14. 时间序列预测的评估指标补遗
  15. android-设置/去除背景,透明度
  16. python安卓开发视频_python开发安卓App实战项目:西瓜视频解析工具
  17. 一个人最好的生活状态
  18. 王道考研408 数据结构 第三章 栈、队列与数组
  19. 世界上最大的计算机硬盘,全球我最大 忆捷A600 2TB移动硬盘评测
  20. 山楂树下:温馨提示,您的2019法定节日已过完

热门文章

  1. vue项目,企业微信隐藏分享入口
  2. 人之所以痛苦,在于追求错误的东西
  3. 用2个随机值破解PHP的MT_RAND函数
  4. win10的默认共享无法使用 -解决方法
  5. Ibus增加搜狗词库
  6. python代码测试健康指数计算器_Python入门级别的小程序(BMI计算器)
  7. python变量赋值及其数据类型
  8. python 编程基础总结
  9. python数据结构和算法(1)
  10. 自然地理学——学习笔记