问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C语言编写输出double的最大值

发布网友 发布时间:2022-04-28 20:14

我来回答

5个回答

热心网友 时间:2022-06-23 01:33

首先你知道double是8个字节,然后你得知道double的内存存储结构

低52位是底数,这里全用1填充

再11位是指数,11位指数可表示-1024~1023,规定统统加上1023,所以指数这里填充2046的bit位

最高位是符号为,为0表示+

测试代码如下:

#include <stdio.h>  //for printf
#include <string.h>//for memcpy
#define MAX_BASE (0xfffffffffffffLL) //52 bits base
#define MAX_POW (2046LL << 52)//12 bit pow(base * 2^pow)
#define SIGN_BIT (0x1LL << 63)
void printBits(long long ll)
{
long long mask = 1;
for(int i=sizeof(long long) * 8 - 1; i>=0; i--)
{
printf("%1d", (ll & mask << i)? 1: 0);
}
printf("\n");
}
int main()
{
long long ll = 0;
ll |= MAX_POW;
ll |= MAX_BASE;
printBits(ll);
double d;
memcpy(&d, &ll, sizeof(ll));
printf("Max double is: %e\n", d);
ll |= SIGN_BIT;
memcpy(&d, &ll, sizeof(ll));
printf("Min double is: %e\n", d);
return 0;
}

热心网友 时间:2022-06-23 01:33

0. “不要用头文件什么的,仅仅使用C来编写”说得好像头文件不是C语言的东西似的……

整形变量的话比较简单,用位运算可以解决,例如
unsigned long maxuint=~0ul;

但是浮点数不是位运算那么简单。具体参考IEEE的浮点类型标准:
https://en.wikipedia.org/wiki/IEEE_floating_point

但事实上C语言标准建议使用头文件<limits.h>和<float.h>中定义的各个类型的最大值最小值,如ULONG_MAX和DBL_MAX等。由于数据类型在不同平台上的实现不同,位运算等获取最大值的方法不能保证跨平台的安全性

热心网友 时间:2022-06-23 01:34

无论什么类型,最大值都是 01111111... 最小值都是111111... 吧,好像是,懒得想了
for(int i = 0, int sum = 0; i < sizeof(type) * 8; i++)
{
sum |= 1;

sum = sum<<1;

}
type ans = (type)sum;
大概思路就是这样吧,for循环的上限要不要-1 还有最大值最小值的区别自己考虑下吧。。不想想了。。

热心网友 时间:2022-06-23 01:34

前面的不知道不瞎说好吧,float的浮点类型表示方法完全不一样,首先你需要知道float存在规格数和非规格数,所以不能是首位为0后面全为1,这个叫NaN是个特殊值,实际上的最大值为首位为0指数位为11111110再加上尾数23个1,才对,实际上float类型的复杂度比你想得多,因为为了补码和原码的兼容计算还有对于存储值的平滑性,IEEE设计的非常好。
如果你对于float感兴趣可以好好学一下

热心网友 时间:2022-06-23 01:35

#include <stdio.h>
#include <limits.h>

void int_max() {
     printf("%d\n",INT_MAX);
}

其它自己搜索去

追问不要用头文件该怎么写呢

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
kmose正确使用方法? 单位高温防护欠缺致员工中暑如何对待 狗狗为什么爱看视频 360浏览器怎么设置倍速播放 ...先讲女主的灵魂飘荡了一段时间,然后重生,请问是那本? 拯救者散热器怎么开 电脑如何一键还原系统电脑一键还原怎么操作 神舟笔记本电脑怎么重新设置神舟战神bios恢复出厂设置 神舟电脑恢复出厂设置神舟战神怎么恢复原厂系统 水泥楼梯如何铺木楼梯 捏住鼻子用力鼓气,耳朵通气正常吗 用C语言输出DOUBLE类型的最大值怎么做? 现在验车是什么流程 右耳堵了,我感冒捏鼻子鼓气好像把鼻涕弄到耳朵那边了,有什么解决方法吗? 给头发做个发型能保持多久? c#中,double和float的范围是多少?double的范围包含了int的范围吗? 耳朵里面感觉有气堵着,但想捏鼻子鼓出来左耳鼓不出来 耳科医生:耳朵鼓膜很不舒服,捏鼻子鼓气右耳鼓膜很容易就吹出去,但不漏气。感觉右耳里面非常不爽 double型能表示的最大数值 发胶和发蜡哪个维持久点? 验车是验车辆的安全性吗?还是什么? 厦门莲花附近有什么好吃的?? 耳朵突然感觉被堵住的感觉,有一层膜一样,捏住鼻子呼气(我忘记了是吸气还是呼气)之后感觉好多了,但 double类型的最大整数是多少 做了发型他可以保持多久是不是一洗头就变成老样子了? 公交 厦门莲花 到同安老城区钟楼 怎么走 捏住鼻子鼓气时耳朵好像有隔膜鼓起 C语言里double类型的最大值和最小值是多少? 验车是怎么回事啊? 厦门莲河离厦检查站撤了吗 左耳像堵了团气,活动起来尤其明显,医生说是鼻炎引起,可鼻子无症状,开了一堆药,捏鼻鼓气,不见效,怎么办啊 看事的给画的符不想要了,怎么处理? 我耳朵感觉发闷,听力稍微影响,捏鼻子用力鼓气感觉漏风怎么了 家里贴的符纸不要了怎么办? 为什么捏住鼻子使劲出气,耳朵里边会有反应? vb中double类型的最大值是多少?为什么我只能计算100000000以内的数值,再大就说溢出了? java语言的基本类型中float与double的最大与最小值分别是多少? 道家的符不用了能直接扔吗 生病了先生给画的符时间长了怎么处理? 在java语言中,怎样才能同时表达Double的最大值和最小值????请高高手解答!有点难度是ba. 请的符咒到期如何送走 间隔符号(中间的点怎么打出来)? 就像“简(中间的点)爱”怎么打? 用C语言输出DOUBLE类型的最大值怎么做 写一个方法,求3个double类型变量的最大值,并返回(用C语言编程) 在寺庙请的符,不想用了,还要归还到寺庙去吗? java中的double和float类型数据的最大值是怎么算出来的 你好大师,自己画的符怎么处理 VB 中double型变量允许最大的数字是对少 java Double 表达式 E是什么意思? float和double的最小值到底是多少啊?