补码乘法怎么算(关于补码(有符号)乘法遇到的疑惑)

:暂无数据 2026-09-20 16:10:01 :0

补码乘法怎么算(关于补码(有符号)乘法遇到的疑惑)

“补码乘法怎么算”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看补码乘法怎么算(关于补码(有符号)乘法遇到的疑惑)!

本文目录

关于补码(有符号)乘法遇到的疑惑

《深入理解计算机系统》第61页
表格第一行的补码-3与3相乘得到的-9不知道是怎么它用补码是怎么计算的。
查了一些资料后发现补码的乘法运算是这样的:
1. 和普通乘法不同,补码乘法需要拓展前面的位,即符号拓展(在表示中添加最高有效位的值的副本),不能默认为0。

2. 因为Y2的权重是-2^(w - 1),所以后面要减去。

所以关于 -3(101)与3(011)乘法步骤如下:

                    1   0    1

            X      0   1    1

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

   1   1    1    1    0    1

   1    1    1    0    1

+ 0    0   0    0

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

    1    1    0   1   1   1

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

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。

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

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

补码乘法

嗳,你这个做算法的方法是错误的,好不!要知道二进制(或机器码)只有在正数的情况下才能运算,(正数与负运算时)都是在正数情况下进行,如果是负数,就将它变为正(负数的补码),然后再进行运算。
1101=+13
1011=+11你的问题都是错的,做对了才怪!
(1)1011--0101
1101
*0101
1101
0000
1101
1000001
最后得(1)10111111

补码1.0101和补码0.1101相乘,怎么计算

首位是符号位,先转化为十进制数。
1.0101的转化,先减1,得1.0100,再把非符号位取反,得1.1011,然后转化成十进制整数指让,就是0.5×1+0.5*0.5*0.5*1+0.5*0.5*0.5*0.5=0.6875。加上符号位,就是-0.6875。
0.1101显然是个整数,补码和原码租逗升相同,所以就是0.8125。
然后相乘,就是-0.55859375,然后转化成二进制,就是-0.10001111。这是原码弊老。

关于补码(有符号)乘法遇到的疑惑的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于关于补码(有符号)乘法遇到的疑惑、关于补码(有符号)乘法遇到的疑惑的信息别忘了在本站进行查找哦。

补码乘法怎么算(关于补码(有符号)乘法遇到的疑惑)

本文编辑:admin

更多文章:


mariadb忘记密码(mysql用户密码忘记了怎么办)

mariadb忘记密码(mysql用户密码忘记了怎么办)

大家好,mariadb忘记密码相信很多的网友都不是很明白,包括mysql用户密码忘记了怎么办也是一样,不过没有关系,接下来就来为大家分享关于mariadb忘记密码和mysql用户密码忘记了怎么办的一些知识点,大家可以关注收藏,免得下次来找不

2026年10月15日 07:50

mysql端口号(如何查看自己数据库的端口号)

mysql端口号(如何查看自己数据库的端口号)

“mysql端口号”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看mysql端口号(如何查看自己数据库的端口号)!

2026年10月15日 06:30

printf打印16进制(C语言 十六进制怎么输出)

printf打印16进制(C语言 十六进制怎么输出)

大家好,今天小编来为大家解答以下的问题,关于printf打印16进制,C语言 十六进制怎么输出这个很多人还不知道,现在让我们一起来看看吧!

2026年10月15日 06:00

avantage怎么设置为中文(Avantage安装丢失GIT)

avantage怎么设置为中文(Avantage安装丢失GIT)

大家好,如果您还对avantage怎么设置为中文不太了解,没有关系,今天就由本站为大家分享avantage怎么设置为中文的知识,包括Avantage安装丢失GIT的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

2026年10月15日 03:00

ospf协议的作用是什么(OSPF路由协议的作用是什么)

ospf协议的作用是什么(OSPF路由协议的作用是什么)

“ospf协议的作用是什么”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看ospf协议的作用是什么(OSPF路由协议的作用是什么)!

2026年10月15日 02:40

方案对比特效js(在一个网页中如何实现两个JS特效)

方案对比特效js(在一个网页中如何实现两个JS特效)

各位老铁们好,相信很多人对方案对比特效js都不是特别的了解,因此呢,今天就来为大家分享下关于方案对比特效js以及在一个网页中如何实现两个JS特效的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

2026年10月15日 02:10

activex控件未注册怎么办(登陆视频监控网页时提示activex控件未注册,怎么解决)

activex控件未注册怎么办(登陆视频监控网页时提示activex控件未注册,怎么解决)

今天给各位分享登陆视频监控网页时提示activex控件未注册,怎么解决的知识,其中也会对登陆视频监控网页时提示activex控件未注册,怎么解决进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

2026年10月14日 20:30

学生信息管理系统c语言(用C语言编程学生信息管理系统!)

学生信息管理系统c语言(用C语言编程学生信息管理系统!)

今天给各位分享用C语言编程学生信息管理系统!的知识,其中也会对用C语言编程学生信息管理系统!进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

2026年10月14日 20:20

excel连接sql数据库教程(excel怎么连接sql数据库)

excel连接sql数据库教程(excel怎么连接sql数据库)

本篇文章给大家谈谈excel连接sql数据库教程,以及excel怎么连接sql数据库对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

2026年10月14日 19:40

null s brawl(null和空字符有区别吗)

null s brawl(null和空字符有区别吗)

今天给各位分享null和空字符有区别吗的知识,其中也会对null和空字符有区别吗进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

2026年10月14日 19:00

最近更新

可信验证系统(什么是可信云认证)
2026-10-15 10:00:23 浏览:0
广告推广app(常见的app推广方式)
2026-10-15 09:20:01 浏览:0
热刺vs马赛比赛(热刺赛程比分)
2026-10-15 09:10:01 浏览:0
热门文章

标签列表