一、引入


首先,我们按照平常的计算方法进行计算(如下图所示),可以很容易的得到了结果。但这却要求计算机提供多个存储空间(如蓝色方框内容所示)存储中间结果和最终结果,浪费了资源,是不可取的。

因此,提出了原码一位乘法和补码一位乘法。

二、原码一位乘法


  • 符号位与数值位分开求,乘积符号由两个数的符号位“异或”形成,而乘积的数值部分则是两个数的绝对值相乘之和。

题目

步骤一

  • 被乘数 x 和乘数 y 均取绝对值参加运算
  • 符号位为 x s ⊕ y s x_s⊕y_s xs​⊕ys​

步骤二

  • 累加寄存器(ACC)取 n+1 位(包含一位符号位,以便右移,故最终结果中ACC的第一位是符号位),初始化为0
  • 乘商寄存器(MQ)取 n 位(不含符号位),初始化为 |y| 的数值部分

步骤三

  • 从乘数的最低位开始判断,若 =1,则部分积加上被乘数|x|,然后右移一位;若=0,则部分积加上0,然后右移一位,由于是无符号数,故移位采用逻辑右移
  • 重复以上步骤,判断N次。

步骤四

  • ACC中的第2~5位和MQ中的第1~4位为乘积的数值部分

由步骤1可知,符号为 -,故乘积为 -0.10001111

三、补码一位乘法


题目

步骤一

  • 符号位参与运算,运算的数均以补码表示,被乘数 x 取双符号位,乘数 y 取单符号位
  • 计算被乘数 x 的负数的补码

步骤二

  • 累加寄存器(ACC)取 n+2 位(取双符号位,以便进行溢出检查,故最终结果中ACC的前两位是符号位),对应 [x]补 和 [-x]补 ,初始化为0
  • 乘商寄存器(MQ)初始化为 [y]补(取单符号位),末尾增设附加位(数值为0),共n+2位

步骤三

  • 根据y的次低位和最低位的取值确定操作(如下表),由于是有符号数,故移位采用补码的算术右移
  • 重复上述步骤,判断N+1次,但第N+1次不再移位(共进行N+1次累加和N次右移)

步骤四

ACC和MQ的前10位为乘积(前2位为符号),故|X*Y|补=11.01110001,X*Y=-0.10001111

四、原码、补码乘法的比较


定点数的运算 —— 原码、补码的乘法运算相关推荐

  1. 定点数的运算 —— 原码、补码的除法运算

    一.引入 我们按照常规的方法进行除法运算,计算机需要解决两个问题:①被除数和除数的大小比较:② 每次计算余数位数不断扩大.因此,我们提出了原码不恢复余数法.补码加减交替法. 二.原码恢复余数法 符号位 ...

  2. 计算机组成原理整数乘法,计算机组成原理 - 定点整数的原码补码运算(待验证)...

    计算机组成原理 - 定点整数的原码补码运算(待验证) 目录 〇.环境 对象 运算 定点整数原码.定点整数补码 移位.加.减.乘.除 原码定义: \(x=\begin{cases} x &0\l ...

  3. 计算机原码补码和反码的计算方法,一个数的原码,反码,补码怎么算,原码 反码 补码...

    数在计算机中是以二进制形式表示的. 数分为有符号数和无符号数. 原码.反码.补码都是有符号定点数的表示方法. 一个有符号定点数的最高位为符号位,0是正,1是副. 以下都以8位整数为例, 原码就是这个数 ...

  4. 原码 补码 反码 移码

    目录 原码 反码 补码 移码 转换 原码 补码 反码 原码 0和1组成 正负用0和1表示(添加在最前面) 真值转原码 转化符号位 数值位十进制转二进制 对于十进制数 233(正数) 正数->符号 ...

  5. 计算机组成原理之 原码 补码 反码

    原码 补码 反码 前言 一.有符号数 1.1原码 补码 反码 总结 前言 在计算机中一般使用二进制表示各个有理数.在计算机中参与运算的数有两大类:有符号数和无符号数.无符号数就是没有符号的数,在寄存器 ...

  6. 二进制原码补码反码运算规则

    1. 二进制最高位是符号位:0正1负 2. 对于正数,负数和零 正数:三码一样 负数: 反码 = 原码符号位不变,其他位取反 补码 = 反码+1 反码 = 补码-1 零:三码都是零 3. 计算机在内部 ...

  7. c语言原码 补码 反码,C语言 原码--反码--补码

    //原码,反码,补码 #include #include //数值的表示方法--原码.反码和补码 //原码:最高位为符号位,其余各位为数值本身的绝对值 //反码: //正数:反码与原码相同 //负数: ...

  8. java反码补码原码作用_java原码补码反码关系解析

    本文为大家解析了java原码补码反码的关系,供大家参考,具体内容如下 原码:不管源数据是十进制还是十六进制,统统将数字转成二进制形式 反码:把原码的二进制统统反过来,0变成1,1变成0 补码:负数的反 ...

  9. 真值 原码 补码 反码 移码

    真值 原码 补码 反码 移码 真值是相对与其它四种的数字类型 书写中一般表示的数叫做"真值" 机器中编码表示的数 "机器数||机器码<原码 补码 反码 移码 > ...

最新文章

  1. 07/11/13 资料整理
  2. 什么是序列化?python pickle模块
  3. 使用indent格式化代码
  4. jvm内存模型_四种视角看JVM内存模型
  5. 屏蔽关闭百度搜索风云热点的方法
  6. linux任务计划学习
  7. 一个线上SQL死锁异常分析:深入了解事务和锁
  8. 2013 成都邀请赛
  9. 跨平台的音视频即时通讯SDK
  10. 使程序默认以管理员权限运行(包括注册表修改法)
  11. 如何设置微信公众号关注后自动回复多条图文链接
  12. linux wifi名称设置中文乱码,无线wifi名称怎么改成中文乱码的方法
  13. 一文看懂信用额度管理体系(三连)
  14. Springboot整合JavaMail通过阿里企业邮箱发验证码
  15. 2020启智开发者大会在京隆重开幕,千万激励奖金首批评选揭晓
  16. 需要系数 计算机房,计算电流及需要系数表.xls
  17. [UNR #3]百鸽笼
  18. 递归分治-大整数乘法
  19. Django学习笔记(下)
  20. 永磁同步电机力矩控制(三):关于电机位置信号

热门文章

  1. S5PV210实验板发布
  2. 斐讯PSG1208 K1 路由器刷机
  3. 笔记本电脑C盘满了清理方法大全
  4. java商城项目开发背景描述_javaweb凌翊商城项目展示概述.ppt
  5. 什么是服务治理?为什么需要服务治理?
  6. 使用ip地址计算子网掩码的方法
  7. Matlab应变片仿真,一种基于Matlab/Adams联合仿真的真实路谱再现系统和方法与流程...
  8. java 排序库_Java数据库排序
  9. 百度Al在线语音合成(简单版)
  10. import tensorflow_addons报错