- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第 32卷第6期 长春师范学院学报 (自然科学版) 2013年 12月
Vo1.32No.6 JournalofChangchunNormalUniversity(NaturalScience) Dec.2013
超范围条件下,数值型数据值的算法及公式推导
— — 以KEILC51为例
崔 凯,李彬彬 ,刘旭东
(营 口职业技术学院电气电子工程系,辽宁营 口115000)
[摘 要]在 C语言教学中,数据类型其相应的数据范围的取值问题都是以补码进行讲解的。当超
数据范围时,数据的真实值发生了变化,若对其进行计算 ,其理论依据仍是补码。但这种计算是很
复杂的,也极易出错 ,对于初学的学生甚至教师都是一种考验。而对于任意一个给定的数 ,要很快
计算出其结果,对于绝大多数师生似乎是一件 “很难完成的任务”。本文先用补码进行理论推导 ,之
后以大家最熟悉的十进制数进行计算 ,并最终推导出计算公式 ,使超数据范围条件下的任意数据的
计算都能准确、轻松地实现。
[关键词]C语言;超数据范围;数值型数据;算法公式
[中图分类号】TP301.6 [文献标识码]A [文章编号]1008—178X(2013)06—0023—04
1 “码”简介(以8位 2进制数为例)
在数学中,数的正负是用 “+”、“一”表示的,而在计算机 (包括单片机)中,数的正负是用最高位的值来
表示的。若最高位为 “0”,则此数为正数;若最高位为 “1”,则此数为负数。例如:十进制数 “+10”,其在计算
机中表示为 。十进制数 “一10”,其在计算机中表示为 。我们把计算机中 “数码化”
了的带符号的数称为机器数,而把原来的数称为机器数的真值。机器数有三种表示方法:原码、反码、补码。
我们得出以下结论…:
1.1 原码
正数的原码与原来的数相同。例:+10的原码为 “0oo01010”。负数的原码符号位置 “1”,而数值不变。
例:一1O的原码为 “一”=。0的原码有两种:[+0]和 [一0]。[+0]的原码为 “0000
0000”。[一0]的原码为 。
1.2 反码
正数的反码与原码相同。例:+1O的反码为 。负数的反码为其绝对值按位取反后,符号位
置 “1”。例:一l0的反码为 。0的反码分为 [+0]和[一0]。[+0]的反码为 。[一
0]的反码为 。
1.3 补码
正数的补码与原码相同。例 :+l0的补码为 。负数的补码为其反码加 1。例 :一10的补码
为 1”=。0的补码为 。
因此,正数的原码、反码、补码均相同。负数的原码为其绝对值的原码最高位置 “1”,反码为其绝对值按
位取反后,符号位置 “1”,补码为其反码加 1。[+0]的原码、反码均为 。[一0]的原码为 “1000
0000”,反码为 。0(包括 [+0]和[一0])的补码为 。
2 8位二进制数原码、补码 、反码对应关系表
数据在计算机中的存储都是以“补码”进行的_2]。
[收稿 日期]2013—07—06
[基金项目]国家自然科学基金资助项目。
[作者简介]崔 凯(1980一),男,辽宁本溪人 ,营口职业技术学院电气电子工程系讲师,硕士,从事单片机开发设计研究。
· 23 ·
接下来我们来看8位二进制数(补码值)及其代表原码、反码、补码表示的值 (十进制)间的对应关系(表
表 1 8位二进制数的原码、反码、补码对应关系
8位二进制数 无符号十进制数
文档评论(0)