计算机中的整数与浮点数

本文介绍了计算机中整数的表示方法,包括原码、补码和反码的概念及其转换,强调了补码在减法运算和统一0的表示中的作用。接着探讨了浮点数的表示,特别是IEEE规定的浮点数表示方式,详细阐述了单精度和双精度浮点数的结构,指数域、尾数域的含义,以及特殊值如NaN、无穷大和0的表示。还提到了非规范化浮点数的情况。
摘要由CSDN通过智能技术生成

  版权声明 未经作者允许,严禁用于商业出版,否则追究法律责任。网络转载请注明出处,这是对原创者的起码的尊重!!!


1 整数

  • 整数在计算机中使用补码表示。

    • 补码:正数的补码=原码;负数的补码=反码+1,如

      • [+1] = 0000 0001
      • [- 1]= 1111 1111
    • 补码的作用:

      • 一是为了将减法转为加法,[A-B]=[A]+[-B]补码
      • 二是统一+0和-0。[+0]=[-0]
    • 补码转为原码

      • 原码=补码的补码
      • 原码= 补码-1的反码

原码:原码就是直接将数转为二进制,对于有符号的数来说,用第一位表示符号,1表示负数,0表示正数。 >其余位表示值。如:

[+1] = 0000 0001
[- 1]= 1000 0001

反码:正数的反码=原码;负数的反码:符号位不变,其他位按位取反。如:

[+1] = 0000 0001
[- 1]= 1111 1110

2 浮点数

2.1 IEEE规定浮点数在计算机中的表示方法

浮点数在计算机中不是以二进制原码来表示,而是用二进制科学计数法表示

  • 将十进制浮点数转为二进制浮点数
  • 将二进制浮点数用规范的二进制科学计数法表示为: ±1.bbbb...2i ± 1. b b b b . . . ∗ 2 i

    • ±叫做符号位,放在左边第一位。
    • bbb…叫做尾数,放在尾数域中,由于规范的二进制科学计数法的第一位都是1,所以省略
      • float(4B)中尾数域为占23尾,精度为24位
      • double(8B)中尾数域占52尾,精度为53位
    • i叫做实际指数,由于指数有正有负,而负数的补码与原码不同,为了解决这个问题,给实际指数i加上一个偏差后放在指数域中
      • 对于单精度float类型,指数域有8位,可以表示0~255,实际值为-127~128,其中0和255用于保存特殊值,偏差为127。
      • 对于双精度double类型,指数域有11位,可以表示0~2047,实际值为-1023~1024,其中0和2047用于保存特殊值,偏差为1023。
  • 符号域、指数域、尾数域的占位情况

    • 对于float类型的数据,其在内存中的表示为:float
    • 对于double类型,其表示形式如下:double
  • IEEE特殊值规定

    • NaN错误
      • 实数范围内发生对负数开平方时产生此错误
      • 指数域全为1,尾数域不全为0,表示该错误
    • 正负无穷大
      • 两个大数相乘产生的上溢,IEEE规定此时不是将结果舍入为可以保存的最大的浮点数(因为这个数可能离实际的结果相差太远而毫无意义),而是将其舍入为无穷。
      • 指数域全1,尾数域全0,表示该值
    • 正负0
      • IEEE 标准的浮点数格式中,小数点左侧的1是隐藏的,而零显然需要尾数必须是零。因此零也就无法直接用这种格式表达而只能特殊处理
      • 指数域全0,尾数域全0,表示该值
    • 非规范化浮点数: ±0.bbbb...
  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓝月心语

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值