如何理解原码一位乘法的计算过程
【2022-05-10 修改】
原码一位乘法的符号位是两个乘数符号位的异或,也就是说,符号位是单独计算的,参与乘法计算的是两个乘数的绝对值。关于符号位的计算原文中没有提及,故有此注。
今天看到原码一位乘法的计算的时候,我是一脸蒙圈的,书上的描述不清不楚,分分钟怀疑智商,不过幸好,经过我多方查阅资料,终于明白了。
下面我将要描述的一种理解思路,是网上绝大多数资料没有过的角度。
首先,我们的例题是,计算二进制原码1101与1011的乘积,既然是要讲原码一位乘,那就先把这种计算方法的计算过程贴一下。
其实网上很多资料,过于沉浸于所谓的“右移”这一操作,从而把中间过程用各种颜色填充,希望讲明白右移之后的每一位去了哪里,反而让我们搞不懂重点在哪里,最后越看越蒙圈,我现在告诉你,看不懂这个计算过程,那就先不看,我放个你能看懂的。
说到乘积,如果不允许使用计算器,我们很容易想到小学学过的竖式计算吧,来,搞起~
这个能看懂吧?好,我们发现,我们用下面那个乘数(也就是“1011”)的每一位,与上面那个数(1101)计算出四个乘积,最后相加。
但是这时候我有个问题,我发现最后求四个数的和,有点难,我的脑子老是转不过来,我想两个两个的加。所以我把这个计算改成这样
这样就好算多了,我用"1011"的后两位与"1101"先求出两个乘积,相加后,再用前一位的“0”与“1101”求一个乘积,拿前面相加得到的结果,跟新的这个乘积相加,以此类推。你会发现我这样算,跟传统的竖式是一样的,只不过我不是乘完所有的一起相加,除此之外,与之前完全相同。
这时候,我把这个计算过程与原来的原码一位乘法相对比,如下
注意一下我用相同颜色方框框出来的加法运算,有没有发现什么相同点?
没错,参与相加的数相同,这是巧合吗?当然不是
我们知道,传统的竖式计算,我们会把新得到的乘积向左移动一位放置,每向下一行,就多往左移动一位,而我们的原码一位乘法则是把之前得到的结果向右一位,每一次得到新的乘积之前,就把之前的得数多向右移动一位,而新计算出的乘积,则永远在固定的位置。
【上面的不动,下面的往左】和【上面的往右,下面的不动】这得到的结果不是一样的吗?
书上说,原码一位乘法类似竖式计算,
我倒是觉得,并不是类似,原码一位乘法就是竖式计算,只不过稍有变形而已。
如何理解原码一位乘法的计算过程相关推荐
- 定点乘法运算之原码一位乘法
x * y = z 讨论已知x和y的情况下,怎么通过原码一位乘法方法得出z~~ 首先说下运算规则~ 1. z的符号位通过x和y的符号位进行异或运算得到~(这个很好理解哒,负负得正,正正得正,正负得负嘛 ...
- 加减法、原码一位乘法、Booth算法、恢复余数法、加减交替法符号位及小结
在学习计算机组成原理的计算方法时,或为步骤疑惑,或为题目难倒,本文主要介绍思路以及对常用类型小结 个人总结,仅供参考,能力有限,难免出错,欢迎大家讨论,书籍参考唐朔飞版<计算机组成原理> ...
- 【计算机组成原理】定点乘法运算之原码两位乘法
讨论x * y = z 采用原码两位乘法,已知x和y,如何求得z 原码两位乘法和原码一位乘法一样,符号位不参加运算 部分积和被乘数x均采用三位符号,乘数y末位每次要加一个c,c一开始是0 根据如下法则 ...
- 原码一位乘法(2020-03-27)
原码一位乘法 我直接上例子吧,说实话我看书上的定义过程,我个憨憨不懂.
- 一位原码的乘法规则_原码一位乘法与补码一位乘法
原码1位乘法 在定点计算机中,两个原码表示的数相乘的运算规则是:乘积的符号位由两数的符号按异或运算得到.而乘积的数值部分则是两个正数相乘之积.设n位被乘数和乘数用定点小数表示(定点整数也相同适用) 被 ...
- [计算机组成原理]2-8、定点数原码一位乘法
前言 在学习定点数的原码一位乘法之前,我们要知道我们在学的是什么,定点数的原码乘法其实完全用十进制的乘法规则来计算,只需要将逢十进一改为逢二进一即可: 既然我们都知道定点数的原码乘法了,我们为什么还要 ...
- 计算机组成原理 原码一位乘法(C语言实现)
#include<stdio.h>int Binary_add(int* Binary1,int* Binary2)//自定义的用于辅助的紧耦合函数,用于实现本题中二进制的加法运算 {in ...
- 2.2.2 .6定点数的乘法运算-1原码一位乘法
XYXZNB哈哈哈哈(๑•̀ㅂ•́)و✧买!୧(﹒︠ᴗ﹒︡)୨ 加法移位运算如何实现,那这小节中我们要学习定点数的源码乘法如何实现,那由于今天窗外的雨下的很大,所以可能会有一些雨声的录入好的,那这个小 ...
- 计算机组成原理之原码一位乘法过程
部分积 乘数 说明 0.0000 + ..0.1110 1101 初始条件,部分积为0 乘数为1 加被乘数 0.1110 0.0111 +. 0.0000 0110 右移一位,形成新的部分积,同时乘数 ...
- 组成原理---补码加减法,原码一两位乘法,补码一两位乘法,754标准
翻转课堂,学生讲课,笔记顺便贴上来吧. 万一有人需要呢. 这里754标准其实可以看https://blog.csdn.net/xingqingly/article/details/18981671,我 ...
最新文章
- Linux下修改Mysql数据库存放路径
- IDEA中无法import自己工程中类的问题解决方法
- html可以有多个main吗,main和div
- 教你如何定位及优化SQL语句的性能问题
- android读取excel文件_python里读写excel等数据文件的几种常用方式
- php 计划任务 不执行,CentOS 系统下 Laravel 计划任务 PHP artisan schedule:run 不执行,应该如何处理?...
- 北海市计算机等级考试,2021上半年北海市计算机二级报名时间|网上报名入口【已开通】...
- 如何进行防SQL注入?
- oracle clob 写入mongo,【Oracle】Varchar2/Blob/Clob用法详解
- php post数组丢失,php – 神秘空$_POST数组
- 女生中专学计算机,女生读中专哪个专业好
- Python Tricks(三)—— 计算误分率
- 伪原创方法-学习一下
- Kaggle酒推荐,winemag-data-130k-v2.csv
- Chrome 手动清理缓存
- (附源码)spring boot校园购物网站 毕业设计041037
- 在html中如何画斜线,在CSS中绘制斜线
- 移动通信的频段、频率与频点
- 【Unity 题型】脚本开发
- uniapp中的分享功能实现(APP,小程序,公众号)