第四章 数值表示_第1页
第四章 数值表示_第2页
第四章 数值表示_第3页
第四章 数值表示_第4页
第四章 数值表示_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第四章数值表示及转换何宾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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论