二进制与软件原理 二进制乘法是什么原理

编程入门 行业动态 更新时间:2024-10-27 20:31:11

1、无符号乘法。

无符号的乘法与加法类似,它的运算方式是比较简单的,只是也可能产生溢出。对于两个w位的无符号数来说,它们的乘积范围在0到(2w-1)2之间,因此可能需要2w位二进制才能表示。

因此由于位数的限制,假设两个w位的无符号数的真实乘积为pro,根据截断的规则,则实际得到的乘积为 pro mod 2w。

2、补码乘法。

与加法运算类似,补码乘法也是建立在无符号的基础之上的,因此我们可以很容易的得到,对于两个w位的补码数来说,假设它们的真实乘积为pro,

则实际得到的乘积为:

U2Tw(pro mod 2w。

上面的式子有一个假设,就是假设对于w位的两个补码数来说,它们的乘积的低w位与无符号数乘积的低w位是一样的。这意味着计算机可以使用一个指令执行无符号和补码的乘法运算。

3、乘法运算的优化。

根据小学所学的乘法运算,假设两个w位的二进制数相乘,则需要进行w次与运算,然后进行w - 1次加法运算才能得到结果。

从此不难看出,乘法运算的时间周期是很长的。因此计算机界的高手们想出了一种方式可以优化乘法运算的效率,就是使用移位和加法来替代乘法。

上述优化的前提是对于一个w位的二进制数来说,它与2k的乘积,等同于这个二进制数左移k位,在低位补k个0。在书中对这一等式进行了证明,过程如下。

这个过程主要应用了无符号编码的公式。

有了上面的基础,就可以使用移位和加法对乘法优化了。

对于任意一个整数y,它总能使用二进制序列表示(假设不超过二进制的表示范围),因此可以将x和y乘积的二进制序列表示为如下形式(此公式在书中没有展现)。

x * y = x * (yw-12w-1 + ... + y020) = (x << w-1) * yw-1 +....+ (x << 0 ) * y0。

举个例子,对于x * 17,可以计算x * 16 + x = (x << 4) + x ,这样算下来的话,只需要一次移位一次加法就可以搞定这个乘法运算。

而对于x * 14,则可以计算 x * 8 + x * 4 + x * 2 = (x << 3) + (x << 2) + (x << 1) ,更快的方式可以这么计算,x * 16 - x * 2 = (x << 4) - (x << 1) 。

这里最后需要提一下的是,加法、减法和移位的速度并不会总快于乘法运算,因此是否要进行上面的优化就取决于二者的速度了。

4、二进制乘法的运算步骤。

二进制数乘法过程可仿照十进制数乘法进行。

但由于二进制数只有0或1两种可能的乘数位,导致二进制乘法更为简单。二进制数乘法的法则为:

1、0×0=0。

2、0×1=1×0=0。

3、1×1=1。

例如:1001和1010相乘的过程如下:

由低位到高位,用乘数的每一位去乘被乘数,若乘数的某一位为1,则该次部分积为被乘数;若乘数的某一位为0,则该次部分积为0。

某次部分积的最低位必须和本位乘数对齐,所有部分积相加的结果则为相乘得到的乘积。

参考资料来源:百度百科——二进制乘法

电脑的软件运行根本原理,还有电脑是怎样把二进制表达成各种类似图像音乐视频的?

给你介绍一本书

这个费劲你看了这本书你再说话

二进制的算法 多举个例子。

1、加法法则: 0+0=0,0+1=1+0=1,1+1=10  

2、减法法则: 0 - 0 = 0 1 - 0 = 1 1 - 1 = 0 0 - 1 = 1 有借位,借1当(10)2 0 - 1 - 1 = 0 有借位 1 - 1 - 1 = 1 有借位。减法,当需要向上一位借数时,必须把上一位的1看成下一位的(2)10。   

3、乘法法则: 0×0=0,0×1=1×0=0,1×1=1  

4、除法法则: 0÷1=0,1÷1=1  除法应注意: 0÷0 = 0 0÷1 = 0 1÷0 = 0 (无意义)  

扩展资料

二进制是计算技术中广泛采用的一种数制。二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”,由18世纪德国数理哲学大师莱布尼兹发现。当前的计算机系统使用的基本上是二进制系统,数据在计算机中主要是以补码的形式存储的。计算机中的二进制则是一个非常微小的开关,用“开”来表示1,“关”来表示0。

参考资料来源:百度百科-二进制

二进制乘法是什么原理

二进制乘法原理:

1111B*1111B=11100001

1111

11110

111100

+1111000 二进制相加

------------------------

11100001

就是左移(进位)8次,每次最高位为1则加进去,8位移完就得出乘积了实际上和我们做10进制的乘法是一样的,只不过这里的进制是2罢了。

比如5×6,转成二进制就是0101×0110 十进制乘法大家都会做,公式就是我们他当成十进制101×110来计算下看看

4位乘积=被乘数×千位被+被乘数×百位+被乘数×十位+被乘数×个位既0101×0110=101×0000+101×100+101×10+101×0 变化下:

4位乘积=被乘数×千位数×1000+被乘数×百位数×100+被乘数×10位数×10+被乘数×个位数

既0101×0110=101×(0×1000)+101×(1×100) +101×(1×10)+101×0

再变化下: 4位乘积=被乘数×千位数×10×10×10+被乘数×百位数×10×10+被乘数×10位数×10+被乘数×个位数

既0101×0110=101×(0×10×10×10)+101×(1×10×10)+101×(1×10)+101×0 =(((101×0)×10)+(101×1))×10+(101×1))×10+101×0

,实际上乘法结果就是被乘数乘以每一位乘以模(10)的N次方的累计和(其实左移位就是进位啦,看得出来吗?)而换成2进制的话很简单,把10读成二进制2就行了,结果还是:

4位乘积=被乘数×千位数×10×10×10+被乘数×百位数×10×10+被乘数×10位数×10+被乘数×个位数

既0101×0110=101×(0×10×10×10)+101×(1×10×10)+101×(1×10)+101×0 =(((101×0)×2)+(101×1))×2+(101×1))×2+101×0

二进制如何编程

学没学过计算机体系结构或是计算机组成原理?

C语言这些高级语言最后也是要转化为0101这些二进制数字的,计算机内的译码器通过不同的0,1(就是高低电平)组合识别不同的操作码(指令=操作码+操作数),然后执行指令.

计算机就是0和1的世界,最早没有高级语言,没有汇编语言,编程都靠纸带打孔,那就是用二进制编程,你只要知道不同的01组合意味着什么就行

二进制算法

1+1本来等于2,但是是二进制,所以和等于2就要进一位,所以二进制2的表示方式就是10,10+1=11,也就是十进制的3,11+1时又是逢二进一了,就成了100,也就是十进制的4。

依此类推,不仅二进制是这样的原理,其他的都是,只要是几进制就是逢几就进位。

十进制转二进制原理

num = a7 * a^7 + a6 * a^6 + a5 * a^5 + a4 * a^4 + a3 * a^3 + a2 * a^2 + a1 * a^1 + a0 * a^0

转载请注明出处51数据库 » 二进制与软件原理 二进制乘法是什么原理

  • 0
  • 0
  • 0
  • 0
  • 0

更多推荐

二进制与软件原理 二进制乘法是什么原理

本文发布于:2023-06-08 14:28:39,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/583074.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:原理   乘法   软件

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!