教育技术人的网上交流空间
|
教育技术公共课
|
微信公众号
关注微信公众号
论坛动态早知道
QQ登录
微信登录
找回密码
您好,请
登录
注册
论坛
论坛
群组
课程
资讯
团队
学档(日志)
Blog
动态
有问必答
云课堂
搜索
本版
文章
帖子
日志
相册
群组
用户
快捷导航
管理的小组
参加的小组
2024-2025学年小教微教学指导
50
1
小学生电脑作品分享——布平凡的艺术
1158
0
人工智能与教育
2082
3
青岛
2648
2
如何培养自己的计算思维
4007
1
今天学习了学习卡片制作,大体上了解了制作
3878
0
应用思考-教育技术论坛
›
≡课程中心≡
›
教育技术公共课
›
关于二进制补码
返回列表
关于二进制补码
[复制链接]
etthink
发表于 2009-8-5 20:48:12
|
显示全部楼层
|
阅读模式
问一个基本的问题。
负数在计算机中如何表示?
举例来说,+8在计算机中表示为二进制的1000,那么-8怎么表示呢?
很容易想到,可以将一个二进制位(bit)专门规定为符号位,它等于0时就表示正数,等于1时就表示负数。比如,在8位机中,规定每个字节的最高位为符号位。那么,+8就是00001000,而-8则是10001000。
但是,随便找一本《计算机原理》,都会告诉你,实际上,计算机内部采用二进制补码(Two's Complement)表示负数。
什么是二进制补码?
它是一种数值的转换方法,要分二步完成:
第一步,每一个二进制位都取相反值,0变成1,1变成0。比如,00001000的相反值就是11110111。
第二步,将上一步得到的值加1。11110111就变成11111000。
所以,00001000的二进制补码就是11111000。也就是说,-8在计算机(8位机)中就是用11111000表示。
不知道你怎么看,反正我觉得很奇怪,为什么要采用这么麻烦的方式表示负数,更直觉的方式难道不好吗?
昨天,我在一本书里又看到了这个问题,然后花了一点时间到网上找资料,总算彻底搞明白了。
二进制补码的好处
首先,要明确一点。计算机内部用什么方式表示负数,其实是无所谓的。只要能够保持一一对应的关系,就可以用任意方式表示负数。所以,既然可以任意选择,那么理应选择一种最方便的方式。
二进制补码就是最方便的方式,它的便利体现在,所有的加法运算可以使用同一种电路完成。
还是以-8作为例子。
假定有两种表示方法。一种是直觉表示法,即10001000;另一种是二进制补码表示法,即11111000。请问哪一种表示法在加法运算中更方便?
随便写一个计算式,16 + (-8) = ?
16的二进制表示是 00010000,所以用直觉表示法,加法就要写成:
00010000
+10001000
---------
10011000
可以看到,如果按照正常的加法规则,就会得到10011000的结果,转成十进制就是-24。显然,这是错误的答案。也就是说,在这种情况下,正常的加法规则不适用于正数与负数的加法,因此必须制定两套运算规则,一套用于正数加正数,还有一套用于正数加负数。从电路上说,就是必须为加法运算做两种电路。
现在,再来看二进制补码表示法。
00010000
+11111000
---------
100001000
可以看到,按照正常的加法规则,得到的结果是100001000。注意,这是一个9位的二进制数。我们已经假定这是一台8位机,因此最高的第9位是一个溢出位,会被自动舍去。所以,结果就变成了00001000,转成十进制正好是8,也就是16 + (-8)的正确答案。这说明了,二进制补码表示法可以将加法运算规则,扩展到整个整数集,从而用一套电路就可以实现全部整数的加法。
二进制补码的本质
在回答二进制补码为什么能正确实现加法运算之前,我们先看看它的本质,也就是那两个步骤的转换方法是怎么来的。
要将正数转成对应的负数,其实只要用0减去这个数就可以了。比如,-8其实就是0-8。
已知8的二进制是00001000,-8就可以用下面的式子求出:
00000000
-00001000
---------
因为00000000(被减数)小于0000100(减数),所以不够减。请回忆一下小学算术,如果被减数的某一位小于减数,我们怎么办?很简单,问上一位借1就可以了。
所以,0000000也问上一位借了1,也就是说,被减数其实是100000000,算式也就改写成:
100000000
-00001000
---------
11111000
进一步观察,可以发现100000000 = 11111111 + 1,所以上面的式子可以拆成两个:
11111111
-00001000
---------
11110111
+00000001
---------
11111000
二进制补码的两个转换步骤就是这么来的。
为什么正数加法适用于二进制补码?
实际上,我们要证明的是,X-Y或X+(-Y)可以用X加上Y的二进制补码完成。
Y的二进制补码等于(11111111-Y)+1。所以,X加上Y的二进制补码,就等于:
X + (11111111-Y) + 1
我们假定这个算式的结果等于Z,即 Z = X + (11111111-Y) + 1
接下来,分成两种情况讨论。
第一种情况,如果X小于Y,那么Z是一个负数。这时,我们就对Z采用二进制补码的逆运算,求出它对应的正数绝对值,再在前面加上负号就行了。所以,
Z = -[11111111-(Z-1)] = -[11111111-(X + (11111111-Y) + 1-1)] = X - Y
第二种情况,如果X大于Y,这意味着Z肯定大于11111111,但是我们规定了这是8位机,最高的第9位是溢出位,必须被舍去,这相当于减去100000000。所以,
Z = Z - 100000000 = X + (11111111-Y) + 1 - 100000000 = X - Y
这就证明了,在正常的加法规则下,可以利用二进制补码得到正数与负数相加的正确结果。换言之,计算机只要部署加法电路和补码电路,就可以完成所有整数的加法。
(完)
学教育技术,上教育技术论坛!http://www.etthink.com
回复
举报
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
优秀版主
授予优秀版主
优秀会员
授予论坛优秀会员
etthink
管理员
11
关注
462
粉丝
7846
帖子
发送私信
收听TA
Ta的主页
推荐阅读
更多+
221923
优秀微课作品——图像处理
2024-2025学年小教微教学指导
教学设计
2024-11-21
小学生电脑作品分享——布平凡的艺术
优秀作品
2024-09-21
人工智能与教育
研究-应用-写作
2024-09-07
青岛
技友交流
2024-08-29
会员达人
更多+
etthink
主题:7846
积分:190843
教育者
主题:2
积分:95
BTS
主题:0
积分:76
少爷stp
主题:11
积分:135
落日长安
主题:2
积分:81
广告位
信息推荐
更多+
优秀微课作品——图像处理那些事
优秀作品——绿殇之小草
优秀美术微课——画竹
bbc数学故事纪录片下载
中学化学课件模板
想不到QQ影音回来了,特发图高兴一下
多窗口文件及文件夹管理
优秀作品展示——数学奇思秒想系列之乘法趣
相框和蒙版
优秀微课作品——滴眼药水
优秀微课作品:触景生情法的运用-以故宫太
PBL教学模式及发展
最新信息
更多+
[微课-翻转-影视]
优秀微课作品——图像处理那些事
12-08
[优秀作品]
优秀作品——绿殇之小草
12-19
[微课-翻转-影视]
优秀美术微课——画竹
12-17
[数学教学资源]
bbc数学故事纪录片下载
02-18
[PPT课件高效制作]
中学化学课件模板
12-23
[信息化教学助手]
想不到QQ影音回来了,特发图高兴一下
12-29
[PPT课件高效制作]
设计制作了一个MOOCs课程的模板
01-05
[信息化教学助手]
多窗口文件及文件夹管理
03-16
[微课-翻转-影视]
优秀作品展示——数学奇思秒想系列之乘法趣
12-20
[技友交流]
相框和蒙版
03-29
[教学设计]
2024-2025学年小教微教学指导
11-21
[教学设计]
教师的恐惧
11-16
[教学设计]
听课:教育技术之交互设计(触发器)——学
11-14
[教育技术公共课]
利用视频素材的拓展几个小问题,你掌握了几
11-11
[信息技术教学]
信息科技发展趋势
11-06
[政治教学资源]
杨朱:古之人,损一毫利天下,不与也
11-06
[教育技术公共课]
学习卡片——四季诗词
11-04
[应用方案]
在线查询系统设计制作:有个Excel表就可以
11-01
[语文教学资源]
唐温如:题龙阳县青草湖
11-01
[技友交流]
搭子是怎么来的
10-31
[教学设计]
2024-2025学年小教微教学指导
11-21
[教学设计]
教师的恐惧
11-16
[信息化教学助手]
优秀软件工具推荐:quicklook
03-10
[信息化教学助手]
QQ截图工具提取版
09-02
[教学设计]
听课:教育技术之交互设计(触发器)——学
11-14
[教育技术公共课]
利用视频素材的拓展几个小问题,你掌握了几
11-11
[信息技术教学]
信息科技发展趋势
11-06
[政治教学资源]
杨朱:古之人,损一毫利天下,不与也
11-06
[教育技术公共课]
学习卡片——四季诗词
11-04
[应用方案]
在线查询系统设计制作:有个Excel表就可以
11-01
快速回复
返回顶部
返回列表