double类型的最大值表示

#include<iostream>
#include<limits>
using namespace std;
int main()
{
    cout<<numeric_limits<double>::max()<<endl;
    cout<<numeric_limits<double>::min()<<endl;
    return 0;
}

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实验报告三数据的表示 ———————————————————————————————— 作者: ———————————————————————————————— 日期: 计算机系统基础实验报告 学院 信电学院 专业 计算机科学与技术 班级 计算机1401 学号 140210110 姓名 段登赢 实验时间: 1. 实验名称:数据的表示2 2. 实验目的和要求: (1)实验目的:熟悉数值数据在计算机内部的表示方式,掌握相关的处理语句。 (2)实验要求:说明你做实验的过程(重要步骤用屏幕截图表示);提交源程序;分析 并回答问题。 3. 实验环境(软、硬件): 要求:详细描述实验用的操作系统,源代码编辑软件,相关硬件环境及所使用的GCC 编译器的信息。 4. 实验内容: (1)请说明下列赋值语句执行后,各个变量对应的机器数和真值各是多少?编写一段程 序代码并进行编译,观察默认情况下,编译器是否报warning。如果有warning信息的话 ,分析为何会出现这种warning信息。 int a = 2147483648; int b = -2147483648; int c = 2147483649; unsigned short d = 65539; short e = -32790; (2)完成书上第二章习题中第40题,提交代码,并在程序中以十六进制形式打印变量u 的机器数。 (3)编译运行以下程序,并至少重复运行3次。 void main() { double x=23.001, y=24.001, z=1.0; for (int i=0; i<10; i++) { if ((y-x)==z) printf("equal\n"); else printf("not equal\n"); x += z; y += z; printf("%d, %f , %f\n", i, x, y); } } 要求: (1)给出每次运行的结果截图。 (2)每次运行过程中,是否每一次循环中的判等结果都一致?为什么? (3)每次运行过程中,每一次循环输出的i、x和y的结果分别是什么?为什么? 5. 实验结果及分析: (1) 实验分析: 机器数就是数字在计算机中的二进制表示形式,其特点一是符号数字化,二是其数的大 小受机器字长的限制。将带符号位的机器数对应的真正数值称为机器数的真值 int a = 2147483648的机器数是1000 0000 0000 0000 0000 0000 0000 0000B int b = -2147483648的机器数是 1000 0000 0000 0000 0000 0000 0000 0000B int c = 2147483649的机器数是 1000 0000 0000 0000 0000 0000 0000 0001B unsigned short d = 65539的机器数无法表示 short e = -32790的机器数无法表示 int类型在32位计算机中占4个字节,即32位。又因为正数的补码是其本身,所以int 类型能表示的所有正数为:0,000 0000 0000 0000 0000 0000 0000 0000B到0,111 1111 1111 1111 1111 1111 1111 1111B即0到+2147483647。而负数的补码是除符号位外各位取反最后加一而来。所以int 类型所能表示的所有负数为:0,000 0000 0000 0000 0000 0000 0000 0000B(- 0D的补码)到1,111 1111 1111 1111 1111 1111 1111 1111B即0到- 2147483647D。而32位二进制数能表示的所有值为2的32次方个,而从- 2147483647D到+2147483647D总共是2的32次方减一个数,而少的这个数就是1000 0000 0000 0000 0000 0000 0000 0000B(- 0D的补码),而任何数的原码都不能在转换成补码时成为这个数,我们人为的把他规定 为-2147483648所以int 类型的取值范围为- 2147483648到+2147483647,所以题目中的b是正确的,并且不会发生溢出。而题目中的 a=2147483648其实已经超出int类型的最大范围,但是a=2147483648=2147483647+1=0,1 11 1111 1111 1111 1111 1111 1111 1111B+1B=1000 0000 0000 0000 0000 0000 0000 0000B= -2147483648,而- 2147483648又在int类型的取值范围内,所以也不会溢出,如果此时打印输出a的十进制 就是-2147

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值