版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第四章数值表示及转换何宾2023.08负数表示方法在C语言程序设计中,使用char和int等关键字声明变量的类型时,默认将其作为有符号数与无符号数只考虑正整数和零不同的是,有符号数考虑负整数、零和正整数在计算机中是如何区分正数和负数的?本节将解决这个问题负数表示方法
负数表示方法在所有可能的负数编码方案中,经常使用两种:符号幅度二进制补码负数表示方法
--符号幅度表示法用MSB表示符号位,剩下的位表示幅度在一个8位的符号幅度系统中:十进制数16用二进制数表示为“00010000”;十进制数-16用二进制数表示为“10010000”最小的负整数最小的正数(0)计数值从全1回卷到全0
最大的负整数最大的正整数正零顺时针方向值变大符号幅度
最小的正整数
负零负数表示方法
--符号幅度表示法
负数表示方法
--符号幅度表示法因此,一个更好的负整数表示方法应该将最大的负整数、零和最小的正整数放在相邻的位置,即数的表示应具有连续性,并且消除对零的两种不同表示方法负数表示方法
--补码表示法补码表示法在二进制补码编码中,MSB仍是符号位,符号位为“1”表示负数;符号位为“0”表示正数最大的负整数零最大的正整数
最小的负整数计数值从全1回卷到全0顺时针方向值变大
二进制补码
最小的正整数负数表示方法
--补码表示法
负数表示方法
--补码表示法采用二进制补码表示负数唯一的缺点就是不直观,但是消除了符号幅度表示法所存在的所有缺陷因此,在实际的数字系统中通常采用二进制补码来表示负数对于一个字长为N位的二进制数来说,其可以表示的十进制整数的范围是:
负数补码的计算
--负整数补码的计算本节介绍两种计算负整数补码的方法,包括原码转补码比较法
负数补码的计算
--负整数补码的计算原码转补码,方法是:步骤1:将该负数所对应的正数按位全部取反步骤2:将取反后的结果加1负数补码的计算
--负整数补码的计算将+17转换-17的二进制补码(字长8位)17对应的8位二进制原码表示为“00010001”将8位二进制数按位全部取反后的结果为“11101110”取反后的结果加1,得到“11101111”因此,-17的二进制补码为“11101111”负数补码的计算
--负整数补码的计算将-35转换为+35的二进制补码(字长8位)-35的补码用8位二进制数表示为“11011101”将8位二进制数按位全部取反后的结果为“00100010”取反后的结果加1,得到“00100011”因此,+35的二进制补码为“00100011”。结论:在有符号数中,正数的原码和补码相同,即用原码表示正数负数补码的计算
--负整数补码的计算
将-127转换为+127的二进制补码(字长8位)-127的补码用8位二进制数表示为“10000001”将8位二进制数按位全部取反后的结果为“01111110”取反后的结果加1,得到“01111111”因此,+127的二进制补码为“01111111”负数补码的计算
--负整数补码的计算将+1转换为-1的二进制补码(字长8位)+1对应的8位二进制原码表示为“00000001”将8位二进制原码按位全部取反后的结果为”11111110”按位取反后的结果加1,得到“11111111”因此,-1的二进制补码为“11111111”负数补码的计算
--负整数补码的计算
负数补码的计算
--负整数补码的计算
使用比较法得到负整数-97所对应的二进制补码(字长8位)因此,-97所对应的二进制补码为“10011111”。转换的数-9731313115731权值二进制数10011111余数313131157310设计实例(二)voidmain(){ volatilechara=170,b=90;volatilecharc; c=a+b;}保存在F:\stc_class_example\example_2目录下负数补码的计算
--负小数补码的计算
负数补码的计算
--负小数补码的计算
使用比较法得到负小数-0.03125所对应的二进制补码因此,得到十进制负小数-0.03125所对应的二进制小数为“1.11111”转换的数-0.031250.968750.468750.218750.093750.03125权值二进制数111111余数0.968750.468750.218750.093750.031250定点数表示定点数就是二进制小数点在固定位置的数二进制小数点左边部分的位被定义为整数位,而该点右边部分的位被定义成小数位。通常表示为Qm.n格式,即:m为整数部分的二进制的位数。m越大,表示数的动态范围越大;m越小,表示数的范围越小n为小数部分的二进制的位数。n越大,表示数的精度越高;n越小,表示数的精度就越低由于是定点数的字长为固定值,因此m+n为定值。这样,只能根据要求,在动态范围和小数精度之间进行权衡
定点数表示
将十进制数-28.65625用定点二进制的形式表示使用前面所介绍的比较法,将-28.65625表示成Q7.5定点二进制数“1100010.01011”转换的数-28.6562535.343753.343753.343753.343753.34375权值二进制数110001余数35.343753.343753.343753.343753.343751.34375转换的数1.343750.343750.343750.093750.093750.03125权值二进制数001011余数0.343750.343750.093750.093750.031250浮点数表示使用浮点使得设计更加简单这是因为在定点设计中,需要最好地利用可用的动态范围在浮点设计中,不需要考虑动态范围的限制浮点数可以在更大的动态范围内提供更高的分辨率通常,当定点数由于受其精度和动态范围所限不能精确表示数值时,浮点数能提供更好的解决方法当然,也在速度和复杂度方面带来了损失浮点数表示浮点类型的标量使用四个字节(32位)保存。浮点数的精度为24位,其表示大约7个10进制数字。使用的格式遵循IEEE-754标准,其中:尾数表示浮点数的实际二进制数字,位数的最高有效位MSB始终为1,因此不保存指数用2的幂表示。它是0~255之间的一个8位数,并以相对于127保存。指数的实际值通过从0~255之间的数减去127得到,范围为-128~127符号位s表示浮点数是正还是负
位索引313029282726252423222120191817161514131211109876543210字段S指数e无符号尾数m浮点数表示
浮点数表示
位索引313029282726252423222120191817161514131211109876543210二进制数01000010110010000000000000000000浮点数表示
位索引313029282726252423222120191817161514131211109876543210二进制数01110101010000011011111010000110浮点数表示单精度双精度字长3264尾数2352指数811偏置1271023浮点数表示除了正常的浮点值外,浮点数还可能包含二进制错误值。这些值定义为IEEE标准的一部分,每当在浮点运算的正常处理过程中发生错误时都会使用这些值。代码应该在每个浮点运算结束时检查可能的算术错误。名字值含义NaN0xFFFFFFF不是一个数(Nota
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年初中兴趣培养指导
- 巡察报告问题底稿制度
- 第九章 第一节 概述
- 纵隔肿瘤术后呼吸道护理干预
- 高血脂人群的坚果选择技巧
- 2026山南市护士招聘考试题库及答案
- 纪念馆讲解题目及答案
- 武汉市2026届高三年级四月供题(武汉四调)数学+答案
- 2026七年级下《三角形内角和》同步练习
- 2026 二年级上册 《从侧面观察物体》 课件
- 山东省济南市2025-2026学年高一年级下学期期中检测物理试题(含答案)
- 2026年北京市大兴区初三一模物理试卷(含答案)
- 2026陕西有色冶金矿业集团有限公司社会招聘48人笔试备考题库及答案解析
- 接种疫苗保障健康成长课件
- 2026年中国邮政集团有限公司上海市分公司校园招聘笔试备考题库及答案解析
- 2026年湖南事业单位招聘笔试题目及答案
- 国开2026年春季《形势与政策》大作业答案
- 2026年新版保密员考试题库含完整答案(名师系列)
- 无人机武器防范安全预案
- (2026年)血流动力学监测与液体管理课件
- DB50T 1915-2025电动重型货车大功率充电站建设技术规范
评论
0/150
提交评论