【2022-05-10 修改】

原码一位乘法的符号位是两个乘数符号位的异或,也就是说,符号位是单独计算的,参与乘法计算的是两个乘数的绝对值。关于符号位的计算原文中没有提及,故有此注。


今天看到原码一位乘法的计算的时候,我是一脸蒙圈的,书上的描述不清不楚,分分钟怀疑智商,不过幸好,经过我多方查阅资料,终于明白了。

下面我将要描述的一种理解思路,是网上绝大多数资料没有过的角度。

首先,我们的例题是,计算二进制原码1101与1011的乘积,既然是要讲原码一位乘,那就先把这种计算方法的计算过程贴一下。

其实网上很多资料,过于沉浸于所谓的“右移”这一操作,从而把中间过程用各种颜色填充,希望讲明白右移之后的每一位去了哪里,反而让我们搞不懂重点在哪里,最后越看越蒙圈,我现在告诉你,看不懂这个计算过程,那就先不看,我放个你能看懂的。

说到乘积,如果不允许使用计算器,我们很容易想到小学学过的竖式计算吧,来,搞起~

这个能看懂吧?好,我们发现,我们用下面那个乘数(也就是“1011”)的每一位,与上面那个数(1101)计算出四个乘积,最后相加。

但是这时候我有个问题,我发现最后求四个数的和,有点难,我的脑子老是转不过来,我想两个两个的加。所以我把这个计算改成这样

这样就好算多了,我用"1011"的后两位与"1101"先求出两个乘积,相加后,再用前一位的“0”与“1101”求一个乘积,拿前面相加得到的结果,跟新的这个乘积相加,以此类推。你会发现我这样算,跟传统的竖式是一样的,只不过我不是乘完所有的一起相加,除此之外,与之前完全相同。

这时候,我把这个计算过程与原来的原码一位乘法相对比,如下

注意一下我用相同颜色方框框出来的加法运算,有没有发现什么相同点?

没错,参与相加的数相同,这是巧合吗?当然不是

我们知道,传统的竖式计算,我们会把新得到的乘积向左移动一位放置,每向下一行,就多往左移动一位,而我们的原码一位乘法则是把之前得到的结果向右一位,每一次得到新的乘积之前,就把之前的得数多向右移动一位,而新计算出的乘积,则永远在固定的位置。

【上面的不动,下面的往左】和【上面的往右,下面的不动】这得到的结果不是一样的吗?

书上说,原码一位乘法类似竖式计算,

我倒是觉得,并不是类似,原码一位乘法就是竖式计算,只不过稍有变形而已。

如何理解原码一位乘法的计算过程相关推荐

  1. 定点乘法运算之原码一位乘法

    x * y = z 讨论已知x和y的情况下,怎么通过原码一位乘法方法得出z~~ 首先说下运算规则~ 1. z的符号位通过x和y的符号位进行异或运算得到~(这个很好理解哒,负负得正,正正得正,正负得负嘛 ...

  2. 加减法、原码一位乘法、Booth算法、恢复余数法、加减交替法符号位及小结

    在学习计算机组成原理的计算方法时,或为步骤疑惑,或为题目难倒,本文主要介绍思路以及对常用类型小结 个人总结,仅供参考,能力有限,难免出错,欢迎大家讨论,书籍参考唐朔飞版<计算机组成原理> ...

  3. 【计算机组成原理】定点乘法运算之原码两位乘法

    讨论x * y = z 采用原码两位乘法,已知x和y,如何求得z 原码两位乘法和原码一位乘法一样,符号位不参加运算 部分积和被乘数x均采用三位符号,乘数y末位每次要加一个c,c一开始是0 根据如下法则 ...

  4. 原码一位乘法(2020-03-27)

    原码一位乘法 我直接上例子吧,说实话我看书上的定义过程,我个憨憨不懂.

  5. 一位原码的乘法规则_原码一位乘法与补码一位乘法

    原码1位乘法 在定点计算机中,两个原码表示的数相乘的运算规则是:乘积的符号位由两数的符号按异或运算得到.而乘积的数值部分则是两个正数相乘之积.设n位被乘数和乘数用定点小数表示(定点整数也相同适用) 被 ...

  6. [计算机组成原理]2-8、定点数原码一位乘法

    前言 在学习定点数的原码一位乘法之前,我们要知道我们在学的是什么,定点数的原码乘法其实完全用十进制的乘法规则来计算,只需要将逢十进一改为逢二进一即可: 既然我们都知道定点数的原码乘法了,我们为什么还要 ...

  7. 计算机组成原理 原码一位乘法(C语言实现)

    #include<stdio.h>int Binary_add(int* Binary1,int* Binary2)//自定义的用于辅助的紧耦合函数,用于实现本题中二进制的加法运算 {in ...

  8. 2.2.2 .6定点数的乘法运算-1原码一位乘法

    XYXZNB哈哈哈哈(๑•̀ㅂ•́)و✧买!୧(﹒︠ᴗ﹒︡)୨ 加法移位运算如何实现,那这小节中我们要学习定点数的源码乘法如何实现,那由于今天窗外的雨下的很大,所以可能会有一些雨声的录入好的,那这个小 ...

  9. 计算机组成原理之原码一位乘法过程

    部分积 乘数 说明 0.0000 + ..0.1110 1101 初始条件,部分积为0 乘数为1 加被乘数 0.1110 0.0111 +. 0.0000 0110 右移一位,形成新的部分积,同时乘数 ...

  10. 组成原理---补码加减法,原码一两位乘法,补码一两位乘法,754标准

    翻转课堂,学生讲课,笔记顺便贴上来吧. 万一有人需要呢. 这里754标准其实可以看https://blog.csdn.net/xingqingly/article/details/18981671,我 ...

最新文章

  1. Linux下修改Mysql数据库存放路径
  2. IDEA中无法import自己工程中类的问题解决方法
  3. html可以有多个main吗,main和div
  4. 教你如何定位及优化SQL语句的性能问题
  5. android读取excel文件_python里读写excel等数据文件的几种常用方式
  6. php 计划任务 不执行,CentOS 系统下 Laravel 计划任务 PHP artisan schedule:run 不执行,应该如何处理?...
  7. 北海市计算机等级考试,2021上半年北海市计算机二级报名时间|网上报名入口【已开通】...
  8. 如何进行防SQL注入?
  9. oracle clob 写入mongo,【Oracle】Varchar2/Blob/Clob用法详解
  10. php post数组丢失,php – 神秘空$_POST数组
  11. 女生中专学计算机,女生读中专哪个专业好
  12. Python Tricks(三)—— 计算误分率
  13. 伪原创方法-学习一下
  14. Kaggle酒推荐,winemag-data-130k-v2.csv
  15. Chrome 手动清理缓存
  16. (附源码)spring boot校园购物网站 毕业设计041037
  17. 在html中如何画斜线,在CSS中绘制斜线
  18. 移动通信的频段、频率与频点
  19. 【Unity 题型】脚本开发
  20. uniapp中的分享功能实现(APP,小程序,公众号)

热门文章

  1. python反爬虫策略ppt_关于反爬虫策略
  2. 项目管理十大知识领域一——项目整体管理
  3. 选择 ASP.NET Core Web UI--主线
  4. Pandas库的基本使用方法
  5. Qt界面刷新优化的一些心得
  6. 从mysql中导出数据乱码_MySQL导入导出数据出现乱码的解决办法
  7. 怎么把ipad中超大文件传输到电脑
  8. 【第三课】Arcgis软件详细介绍
  9. OpenCV-像素值读写(java版)
  10. 3ds Max: Substance to V-Ray Workflows 3ds Max教程:从Substance到V-Ray工作流程 Lynda课程中文字幕