当前位置:首页 » 操作系统 » 二进制乘法算法

二进制乘法算法

发布时间: 2025-05-10 05:53:46

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

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 (无意义)

(1)二进制乘法算法扩展阅读

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

② 二进制加减乘除如何算,高手来啊!

二进制遵循以下法则:0+0=0、0+1=1、1+0=1、1+1=0 进位、0-0=0、0-1=1 借位。

代入计算得10000-111=1001。

二进制乘法:(如10111<<1000代表在10111后面添加3个零)

10010<<10000=100100000

10010<<1000=10010000

10010<<10=100100

最后相加,得

100100000+10010000+100100

=110110000+100100

=111010100

(2)二进制乘法算法扩展阅读:

二进制优点

1、数字装置简单可靠,所用元件少。

2、只有两个数码0和1,因此它的每一位数都可用任何具有两个不同稳定状态的元件来表示。

3、基本运算规则简单,运算操作方便。

二进制缺点

用二进制表示一个数时,位数多。因此实际使用中多采用送入数字系统前用十进制,送入机器后再转换成二进制数,让数字系统进行运算,运算结束后再将二进制转换为十进制供人们阅读。

二进制和十六进制的互相转换比较重要。不过这二者的转换却不用计算,每个C,C++程序员都能做到看见二进制数,直接就能转换为十六进制数,反之亦然。

③ 二进制数如何进行乘法运算

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相乘的过程如下:

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

参考资料来源:网络——二进制乘法

④ 二进制的加法和乘法运算规则是什么

二进制乘法和加法都是通过对二进制数的移位来实现的,移位相当于×2,计算机算根据给出的加法式子与乘法式子算要移多少位。
扩展:

1、二进制数据的表示法
二进制数据也是采用位置计数法,其位权是以2为底的幂。例如二进制数据110.11,其权的大小顺序为2^2、2^1、2^0、2^-1、2^-2。对于有n位整数,m位小数的二进制数据用加权系数展开式表示,可写为:
(a(n-1)a(n-2)…a(-m))2=a(n-1)×2^(n-1)+a(n-2)×2^(n-2)+……+a(1)×2^1+a(0)×2^0+a(-1)×2^(-1)+a(-2)×2^(-2)+……+a(-m)×2^(-m)
二进制数据一般可写为:(a(n-1)a(n-2)…a(1)a(0).a(-1)a(-2)…a(-m))2。
注意:
1.式中aj表示第j位的系数,它为0和1中的某一个数。
2.a(n-1)中的(n-1)为下标,输入法无法打出所以用括号括住,避免混淆。
3.2^2表示2的平方,以此类推。
【例1102】将二进制数据111.01写成加权系数的形式。
解:(111.01)2=(1×2^2)+(1×2^1)+(1×2^0)+(0×2^-1)+(1×2^-2)
二进制和十六进制,八进制一样,都以二的幂来进位的。

二进制数据的算术运算的基本规律和十进制数的运算十分相似。最常用的是加法运算和乘法运算。

1. 二进制加法

有四种情况: 0+0=0

0+1=1

1+0=1

1+1=10 进位为1

【例1103】求 (1101)2+(1011)2 的和

解:

1 1 0 1

+ 1 0 1 1

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

1 1 0 0 0

2. 二进制乘法

有四种情况: 0×0=0

1×0=0

0×1=0

1×1=1

【例1104】求 (1110)2 乘(101)2 之积

解:

1 1 1 0

×  1 0 1

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

 1 1 1 0

 0 0 0 0

1 1 1 0

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

1 0 0 0 1 1 0

(这些计算就跟十进制的加或者乘法相同,只是进位的数不一样而已,十进制的是到十才进位这里是到2就进了)

3.二进制减法

0-0=0,1-0=1,1-1=0,10-1=1。

4.二进制除法

0÷1=0,1÷1=1。[1][2]

5.二进制拈加法

拈加法二进制加减乘除外的一种特殊算法。

拈加法运算与进行加法类似,但不需要做进位。此算法在博弈论(Game Theory)中被广泛利用。

十进制数转换为二进制数、八进制数、十六进制数的方法:

二进制数、八进制数、十六进制数转换为十进制数的方法:按权展开求和法

1.二进制与十进制间的相互转换:

(1)二进制转十进制

方法:“按权展开求和”

例: (1011.01)2 =(1×2^3+0×2^2+1×2^1+1×2^0+0×2^(-1)+1×2^(-2) )10

=(8+0+2+1+0+0.25)10

=(11.25)10

规律:个位上的数字的次数是0,十位上的数字的次数是1,......,依奖递增,而十

分位的数字的次数是-1,百分位上数字的次数是-2,......,依次递减。

注意:不是任何一个十进制小数都能转换成有限位的二进制数。

(2)十进制转二进制

· 十进制整数转二进制数:“除以2取余,逆序排列”(除二取余法)

例: (89)10 =(1011001)2

2 89 ……1

2 44 ……0

2 22 ……0

2 11 ……1

2 5 ……1

2 2 ……0

1

· 十进制小数转二进制数:“乘以2取整,顺序排列”(乘2取整法)

例: (0.625)10= (0.101)2

0.625X2=1.25 ……1

0.25 X2=0.50 ……0

0.50 X2=1.00 ……1

2.八进制与二进制的转换:

二进制数转换成八进制数:从小数点开始,整数部分向左、小数部分向右,每3位为一组用一位八进制数的数字表示,不足3位的要用“0”补足3位,就得到一个八进制数。

八进制数转换成二进制数:把每一个八进制数转换成3位的二进制数,就得到一个二进制数。

八进制数字与二进制数字对应关系如下:

000 -> 0 100 -> 4

001 -> 1 101 -> 5

010 -> 2 110 -> 6

011 -> 3 111 -> 7

例:将八进制的37.416转换成二进制数:

3 7 . 4 1 6

011 111 .100 001 110

即:(37.416)8 =(11111.10000111)2

例:将二进制的10110.0011 转换成八进制:

0 1 0 1 1 0 . 0 0 1 1 0 0

2 6 . 1 4

即:(10110.011)2 = (26.14)8

3.十六进制与二进制的转换:

二进制数转换成十六进制数:从小数点开始,整数部分向左、小数部分向右,每4位为一组用一位十六进制数的数字表示,不足4位的要用“0”补足4位,就得到一个十六进制数。

十六进制数转换成二进制数:把每一个十六进制数转换成4位的二进制数,就得到一个二进制数。

十六进制数字与二进制数字的对应关系如下:

0000 -> 0 0100 -> 4 1000 -> 8 1100 -> C

0001 -> 1 0101 -> 5 1001 -> 9 1101 -> D

0010 -> 2 0110 -> 6 1010 -> A 1110 -> E

0011 -> 3 0111 -> 7 1011 -> B 1111 -> F

例:将十六进制数5DF.9 转换成二进制:

5 D F . 9

0101 1101 1111 .1001

即:(5DF.9)16 =(10111011111.1001)2

例:将二进制数1100001.111 转换成十六进制:

0110 0001 . 1110

6 1 . E

即:(1100001.111)2 =(61.E)16

热点内容
数空车床编程 发布:2025-05-10 08:48:48 浏览:90
脚本禁英雄 发布:2025-05-10 08:46:47 浏览:428
plc编程软件gxdeveloper 发布:2025-05-10 08:43:46 浏览:873
沼气压缩 发布:2025-05-10 08:38:40 浏览:271
阿里云服务器centos 发布:2025-05-10 08:37:14 浏览:246
安卓手机配什么收音麦 发布:2025-05-10 08:33:37 浏览:373
安卓手机如何边玩游戏边视频 发布:2025-05-10 08:30:27 浏览:192
在哪里观看登录密码 发布:2025-05-10 08:28:50 浏览:212
哔哩哔哩视频默认存储位置 发布:2025-05-10 08:28:48 浏览:672
php自带函数 发布:2025-05-10 08:22:00 浏览:201