标题:[讨论]关于float的问题?谁能仔细讲解一下?
只看楼主
peiyq401
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2006-5-5
得分:0 
果然高明,看来2楼的应该是个高手,学很久了吧,拜个师行不?
2006-05-05 16:01
–★–
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1512
专家分:0
注 册:2006-5-1
得分:0 
9楼程序的运行结果是
01000000 00011001 10011001 10011010
高------------------------------>低
释义:
最高位=符号位,0:正,1:负
接下来的8位是移码,今为10000000,相当于10进制128,根据IEEE规定,实际代表2的(128-127)次幂即2的1次方。
余下来的23位称为“尾数”,尾数的整部1是隐含的。
因此真实尾数为下列2进制小数
1.00110011001100110011010
=1+1/8+1/16+1/128+1/256+1/2048+1/4096+1/8192
+1/65536+1/131072+1/524288
将此数与2的1次幂即2相乘便是电脑认为的2.4f

落霞与孤鹜齐飞,秋水共长天一色! 心有多大,路有多宽。三教九流,鸡鸣狗盗。兼收并蓄,海纳百川。
2006-05-05 16:02
–★–
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1512
专家分:0
注 册:2006-5-1
得分:0 
以下是引用soft_wind在2006-5-5 15:53:00的发言:
呵呵,楼上的程序短小又精悍,我喜欢这种风格!

我要自夸一句的是:迄今为止,狂一点古今中外,我没见过一本书在讲到union时举出我这么漂亮的例子。恰恰相反,老谭告诫说:这个成员进去了,就冲掉了原先的那个成员,云云。还自以为是地认定,union是用来节约内存的。其实,靠union来省内存,“大盐都得卖馊掉”。哪有Fortran的Equivalence()来得方便?


落霞与孤鹜齐飞,秋水共长天一色! 心有多大,路有多宽。三教九流,鸡鸣狗盗。兼收并蓄,海纳百川。
2006-05-05 16:08
andyss
Rank: 1
等 级:新手上路
帖 子:189
专家分:0
注 册:2006-4-8
得分:0 
12楼对C有深入的研究啊!不过说实话太狂了!

幽幽黄桷兰----建四狼
2006-05-05 16:47
–★–
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1512
专家分:0
注 册:2006-5-1
得分:0 
以下是引用andyss在2006-5-5 16:47:00的发言:
12楼对C有深入的研究啊!不过说实话太狂了!

给说我“太狂”的您出道题目:

如何进行12位数的高精度运算?
例如 1)1234567888+8765432111 = 9999999999

2)111111*333333 = 37036962963

3)9999999999 / 8888888888 = 1.125

4)1/3 = 0.33333333333


落霞与孤鹜齐飞,秋水共长天一色! 心有多大,路有多宽。三教九流,鸡鸣狗盗。兼收并蓄,海纳百川。
2006-05-05 17:07
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
得分:0 
我到不见得,不能叫狂妄,这叫自信,我要有他的水平比他还自信

日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-05-05 17:08
andyss
Rank: 1
等 级:新手上路
帖 子:189
专家分:0
注 册:2006-4-8
得分:0 
以下是引用–★–在2006-5-5 16:08:00的发言:

我要自夸一句的是:迄今为止,狂一点古今中外,我没见过一本书在讲到union时举出我这么漂亮的例子。恰恰相反,老谭告诫说:这个成员进去了,就冲掉了原先的那个成员,云云。还自以为是地认定,union是用来节约内存的。其实,靠union来省内存,“大盐都得卖馊掉”。哪有Fortran的Equivalence()来得方便?

很抱歉那,我说的是上面这些话有点狂,至少我见过这样的例子,但是不知到在哪里.然后,对于你的题目我会思考了在做答复.


幽幽黄桷兰----建四狼
2006-05-05 17:13
–★–
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1512
专家分:0
注 册:2006-5-1
得分:0 
以下是引用论坛在2006-5-5 17:08:00的发言:
我到不见得,不能叫狂妄,这叫自信,我要有他的水平比他还自信

怎么听怎么舒坦。说实话,我还弄成功一个“超精度四则加函数运算”的系统。其精度达10进制144位!用了10000多条80386汇编+80387指令,后来又把它与TC++4.0嫁接起来了。所以有时讲话“大”了一些。今后一定谨记古训“满遭损、谦受益”,做一个好孩子


落霞与孤鹜齐飞,秋水共长天一色! 心有多大,路有多宽。三教九流,鸡鸣狗盗。兼收并蓄,海纳百川。
2006-05-05 17:19
–★–
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1512
专家分:0
注 册:2006-5-1
得分:0 
长假飞也似地在眼皮子底下溜走了,谢谢版主、谢谢列位兄弟姐妹,是您和你们给我的假期带来多多快乐。有空还会光顾论坛的。——这是一封提前发出的暂别信

落霞与孤鹜齐飞,秋水共长天一色! 心有多大,路有多宽。三教九流,鸡鸣狗盗。兼收并蓄,海纳百川。
2006-05-05 17:27
andyss
Rank: 1
等 级:新手上路
帖 子:189
专家分:0
注 册:2006-4-8
得分:0 
以下是引用–★–在2006-5-5 17:07:00的发言:

我已经把第一个题写出来了,当然我不用UNION来写
#include <stdio.h>
#include <stdlib.h>

#define LONG 15 //精度


void Make(char *p);
void GetString(char *p);
void Compute(int *sum,char *number1,char *number2);

void main()
{
char string1[LONG];
char string2[LONG];
int temp;
int sum[LONG-1];

GetString(string1);
GetString(string2);

Make(string1);
Make(string2);

Compute(sum,string1,string2);

printf("The result is:");
for(temp=0;temp<LONG-1;temp++)
{
if(sum[temp]!=0)
printf("%d",sum[temp]);
}
printf("\n");
}

void Make(char *p){
int i,j;
for(i=0;p[i]>47;i++){
}
for(j=LONG-1;j>=0;j--,i--){
if(i<0){
p[j]=48;
}
else
p[j]=p[i];
}
}

void GetString(char *p){
printf("please input number2:");
for(int temp=0;temp<LONG-1;temp++){
scanf("%c",&p[temp]);
if(p[temp]<=47){
p[temp]=0;
break;
}
}
}

void Compute(int *sum,char *number1,char *number2){
int i[LONG-1],j[LONG-1];
for(int temp=0;temp<LONG-1;temp++){
i[temp]=number1[temp]-48;
j[temp]=number2[temp]-48;
sum[temp]=(i[temp]+j[temp])%10;
sum[temp-1]=sum[temp-1]+(i[temp]+j[temp])/10;
}
}


幽幽黄桷兰----建四狼
2006-05-05 18:51



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-61998-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.233639 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved