C++个人疑问集

C++个人疑问集十进制浮点数的二进制存储方式以及转换十进制浮点数的二进制存储方式以及转换V = (-1)s×M×2E(-1)s表示符号位,当s=0,V为正数;当s=1,V为负数M表示有效数字,大于等于1,小于22E表示指数例如:将十进制178.125表示成机器内的32个字节的二进制形式第一步:将178.125表示成二进制数:(178.125)(十进制数)=(10110010.001)(二进制形式);十进制整数转换为二进制整数:除2取余,逆序排列十进制小数转换为二进制小数:乘2取整,顺
摘要由CSDN通过智能技术生成

十进制浮点数的二进制存储方式以及转换

V = (-1)s×M×2E

  • (-1)s表示符号位,当s=0,V为正数;当s=1,V为负数
  • M表示有效数字,大于等于1,小于2
  • 2E表示指数

例如:将十进制178.125表示成机器内的32个字节的二进制形式

  • 第一步:将178.125表示成二进制数:(178.125)(十进制数)=(10110010.001)(二进制形式);
    十进制整数转换为二进制整数除2取余,逆序排列
    十进制小数转换为二进制小数乘2取整,顺序排列
  • 第二步:将二进制形式的浮点实数转化为规格化的形式:(小数点向左移动7个二进制位可以得到)
    10110010.001=1.0110010001*27 因而产生了以下三项:
    • 符号位:该数为正数,故第31位为0,占一个二进制位
    • 阶码:指数为7,故其阶码为127+7=134=(10000110)(二进制),占从第30到第23共8个二进制位
    • 尾数:为小数点后的部分, 即0110010001.因为尾数共23个二进制位,在后面补13个0,即01100100010000000000000

所以178.125在内存中的实际表示方式为:
0|10000110 |01100100010000000000000

cerr、cout、clog的区别

  • cout:标准输出流,用于常规输出,输入读进缓冲区,触发刷新缓冲区动作时输出缓冲区内容至终端显示器,也可被重定向输出至磁盘文件
  • cerr:非缓冲的标准错误流,用于显示错误信息,错误信息不输入缓冲区,直接显示在终端显示器,一般情况下不被重定向
  • clog:缓冲的标准错误流,一般用于记录运行日志,日志消息读进缓冲区,触发刷新缓冲区动作时输出缓冲区内容至终端显示器,一般情况下可被重定向输出至日志文件
    tip:重定向在不同的操作环境定义不同

缓冲区的作用:计算机对缓冲区的操作快于磁盘操作,可以减少计算机对磁盘的读写次数,对低速的输入输出设备和高速的CPU之间进行协调工作。

触发刷新缓冲区的动作

  1. 缓冲区满时
  2. 执行flush语句
  3. 行缓冲时遇到endl,cerr或cin时
  4. 关闭文件

cerr与clog的使用场景

  • clog:clog为缓冲输出,cerr为无缓冲输出,缓冲输出通常比无缓冲效率高,所以记录日志一般使用clog
  • cerr:由于clog为缓冲输出,当程序崩
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值