社区
C语言
帖子详情
二进制计算?
csoma
2012-09-08 08:24:16
CPU只有一个加法器,没减法器,对否?
CPU计算减法时,当加法来运算。
十进制:(-3)-(-7);
-3:用补码
-7:用补码
用二进制的方法,怎样计算两个负数相减?
...全文
222
11
打赏
收藏
二进制计算?
CPU只有一个加法器,没减法器,对否? CPU计算减法时,当加法来运算。 十进制:(-3)-(-7); -3:用补码 -7:用补码 用二进制的方法,怎样计算两个负数相减?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Alexander
2012-09-08
打赏
举报
回复
[Quote=引用楼主 的回复:]
CPU只有一个加法器,没减法器,对否?
CPU计算减法时,当加法来运算。
十进制:(-3)-(-7);
-3:用补码
-7:用补码
用二进制的方法,怎样计算两个负数相减?
[/Quote]
别人答过的在下不再作答:
CPU只有一个加法器,没减法器,对否?
错的。CPU中只有加法器,不存在减法器(话说根本不存在减法器这种数字电路……)。严格的说一个运算器里只有一个加法器。但对于多核CPU来说,每一个内核都有自己的运算器。所以CPU中的加法器个数是与内核数目相同的。
PS:如果LZ这题是题库里的话建议给肯定答案,因为题库里有不少题目是在多核CPU出现之前就加入了的。
CPU计算减法时,当加法来运算。
既然CPU中只有加法器,那用加法来代替减法运算就是理所当然的了吧。
Alexander
2012-09-08
打赏
举报
回复
[Quote=引用 4 楼 的回复:]
两个整数相加,可能是以下的情况:
1.两个正数,相加
3+7
2,一正一负,相加
-3+7
3.两个负数,相加
-3+(-7)
怎样知道计算结果,溢出?
[/Quote]
好像没人答这个:
1.两正数相加,结果符号位为负则溢出;
2.正负数相加,不会溢出;
3.两负数相加,结果符号位为正则溢出。
左眼看到鬼
2012-09-08
打赏
举报
回复
为什么要舍掉那个1呢?
csoma
2012-09-08
打赏
举报
回复
两个正数相加,肯定不会有溢出,对否?
如果,两个操作数,其中一个是负数。就有可能溢出,对否?
csoma
2012-09-08
打赏
举报
回复
两个整数相加,可能是以下的情况:
1.两个正数,相加
3+7
2,一正一负,相加
-3+7
3.两个负数,相加
-3+(-7)
怎样知道计算结果,溢出?
lulutong_
2012-09-08
打赏
举报
回复
打错了从右向左数,蛋疼!我跳楼去了。[Quote=引用 8 楼 的回复:]
我又弄错了,是次高位,也就是从左向右数0,1,2,3,4,5,6,7中第6位数向第七位有无进位,而不是什么低四位向高四位有无进位。
我还是不多少了,怕误人子弟。
具体的去看《计算机组成原理》的《运算方法和运算器》章节吧。
引用 7 楼 的回复:
问题一:相加肯定不会溢出?
答:不对!当数值超过计算机所能表示的数值时就会造成溢出。如8位计算机所能表示的数值范围是1000 0000到
……
[/Quote]
lulutong_
2012-09-08
打赏
举报
回复
弄错了,没有溢出!结果为正数,就是1 0000 0100溢出的1舍去,结果为4.[Quote=引用 1 楼 的回复:]
[x-y]补=[x]补-[y]补=[x]补+[-y]补
所以[(-3)-(-7)]补=[-3]补+[7]补
设计算机处理器为8位,则[-3]补=1111 1101,[7]补=0000 0111
所以[(-3)-(-7)]补=1 0000 0100。发生溢出,所以无法计算。
为什么会发生溢出?
-1的补码达到1111 1111,-3的补码1111 1101,当计算[-3]补+2的时候8位数……
[/Quote]
lulutong_
2012-09-08
打赏
举报
回复
由补码减法:[x-y]补=[x]补-[y]补=[x]补+[-y]补
所以[(-3)-(-7)]补=[-3]补+[7]补
令计算机处理器为8位则
原式=1111 1101+0000 0111=1 0000 0100,产生溢出,所以无法计算。
(个人推到仅供参考,资料《计算机组成原理》,白中英,第32页)
lulutong_
2012-09-08
打赏
举报
回复
[x-y]补=[x]补-[y]补=[x]补+[-y]补
所以[(-3)-(-7)]补=[-3]补+[7]补
设计算机处理器为8位,则[-3]补=1111 1101,[7]补=0000 0111
所以[(-3)-(-7)]补=1 0000 0100。发生溢出,所以无法计算。
为什么会发生溢出?
-1的补码达到1111 1111,-3的补码1111 1101,当计算[-3]补+2的时候8位数据已经占满,再加5必定溢出!
lulutong_
2012-09-08
打赏
举报
回复
我又弄错了,是次高位,也就是从左向右数0,1,2,3,4,5,6,7中第6位数向第七位有无进位,而不是什么低四位向高四位有无进位。
我还是不多少了,怕误人子弟。
具体的去看《计算机组成原理》的《运算方法和运算器》章节吧。[Quote=引用 7 楼 的回复:]
问题一:相加肯定不会溢出?
答:不对!当数值超过计算机所能表示的数值时就会造成溢出。如8位计算机所能表示的数值范围是1000 0000到
0111 1111。其中1000 0000是-128的补码(2的8次方减1000 0000等于1000 0000即128),而不是-0,补码中0就是0000 0000.0111 1111因为高位为0所以为整数即127.
所以8位CPU最多可以表示-128~……
[/Quote]
lulutong_
2012-09-08
打赏
举报
回复
问题一:相加肯定不会溢出?
答:不对!当数值超过计算机所能表示的数值时就会造成溢出。如8位计算机所能表示的数值范围是1000 0000到
0111 1111。其中1000 0000是-128的补码(2的8次方减1000 0000等于1000 0000即128),而不是-0,补码中0就是0000 0000.0111 1111因为高位为0所以为整数即127.
所以8位CPU最多可以表示-128~+127.
如果数值小于-128或大于+127则产生溢出,而不是相加肯定不会溢出。
问题二:
为什么那个1要去掉?
[-3]补+[7]补=1111 1101+0000 0111=1 0000 0100。
加法运算中低四位向高四位有进位,且高四位向高位(即不存在的第8位——从第0位算起)有进位,则多出的1
不算溢出。所以可以不管,因为8位CPU只能贮存8位数字,所以实际上多出的1保存不了,相当于不存在了。
但如果低四位向高四位有进位,而高四位向更高位无进位则发生溢出,如:
1001 0100
1000 0001
------------
10001 0101
右边的低四位数字向高四位没有进位,而第8位却多了个1,所以产生溢出。
这些判断是计算机数学家经过严密推理的,我反正只能套公式,如果你够牛,那你可以去挑战一下。
其他的你就要多看书了,一时半会说不清楚的。
[Quote=引用 5 楼 的回复:]
两个正数相加,肯定不会有溢出,对否?
如果,两个操作数,其中一个是负数。就有可能溢出,对否?
[/Quote]
计算
机为什么采用
二进制
?
要回答这个问题,首先让我们了解一下
二进制
概述以及其发展 。 进制是逢2进位的进位制,0、1是基本算符;
计算
机运算基础采用
二进制
。 电脑的基础是
二进制
,那么,什么是
二进制
呢,为什么需要
二进制
呢?在早期设计的机械
计算
装置中,使用的不是
二进制
,而是十进制或者其他进制,利用齿轮的不同位置表示不同的数值,这种
计算
装置可能更加接近人类的思想方式。比如说一个
计算
设备有十个齿轮,它们级连接起来,每一个齿轮有十...
三进制
计算
机比
二进制
快,三进制会取代
二进制
计算
机吗?
三进制
计算
机,是以三进制数字系统为基础而发展的
计算
机。三进制
计算
机跟
二进制
计算
机比,优势在哪里?三进制逻辑电路比
二进制
逻辑电路速度更快、可靠性更高,而且需要的设备和电能也更少。三进制代码的一个特点是对称,即相反数的一致性,因此它和
二进制
代码不同,不存在无符号数的概念。这样,三进制
计算
机的架构也要简单、稳定、经济得多。其指令系统也更便于阅读,而且非常高效。第一台三进制
计算
机的诞生。1840年由 Th...
浮点数(小数)在
计算
机中如何用
二进制
存储?
浮点数在
计算
机中如何用
二进制
存储? 前言 前面我有篇博文详解了
二进制
数,以及如何同
二进制
数表示整数。但是,
计算
机处理的不仅仅是整数,还有小数,同样小数在
计算
机也是用
二进制
进行存储的,但是,
二进制
如何去存储小数呢?
计算
机对于小数的
计算
又是否真的丝毫不差呢?本文将进行介绍。 一、用
二进制
表示小数
二进制
转换为十进制的方法就是各个位的数字与位权乘积之和。
二进制
数小数点前面部分的位权,第 1 位是 2 的 0 次幂、第 2 位 是 2 的 1 次幂……以此类推。小数点后面部分的位权,第 1 位是 2 的-1次幂、第
计算
机为什么是
二进制
的?
计算
机为什么是
二进制
的? 众所周知,现在的
计算
机都是以
二进制
存储和运算数据的,那么为什么是
二进制
而不是常见的十进制呢? 原因很简单,因为现在的
计算
机是电子
计算
机,内部只有两个状态,所以就依据这两个状态创建了一种新的进制形式——
二进制
。这样极大的简化了电子
计算
机的结构,可以用电流的有无、光线的有无以及磁性的有无等状态来实现数学上的
二进制
。数学上用 0 和 1 来分别代表这两个状态罢了。 当然,随着科学的发展,以后
计算
机不再是电子
计算
机了,那么
二进制
也可能就消失了。 ...
计算
机内部为什么采用
二进制
表示数据,
计算
机内部数据为什么用的是
二进制
表示?...
原标题:
计算
机内部数据为什么用的是
二进制
表示? 说起数制的表示,我们常用的是十进制,即用0-9这十个数值来组合来表达任意的自然数,那为什么
计算
机内部却用
二进制
来表示数据呢?
计算
机最基本的功能就是数值运算,它的实现是建立在数字电路基础之上,为了更简单的设计
计算
机,让
计算
机更易于数值运算,同时又根据数字电路的特点,所以就有了
二进制
,即用0和1的任意组合来表示任意自然数。数字1可以用数字电路中的高电平来...
C语言
69,371
社区成员
243,080
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章