| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1055 人关注过本帖
标题:为什莫我写的这段程序没有负值??
只看楼主 加入收藏
ibelieveican
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2006-4-28
收藏
 问题点数:0 回复次数:13 
为什莫我写的这段程序没有负值??

void get_adr(int num)
{
int i;
long int str1=0;
for(i=0;i<4;i++)
{
str1 <<= 8;
str1 |= fgetc(infp);
}

ch[num].adr=str1*pow(2.,-8);

}

在这个函数中,我想达到的目的是,先把一个十六进制的字符串
变成2进制,然后乘以一个指数。

可是为什莫我算出的结果与正确的结果相比没有负数呢?愁死了
到底是哪里的问题,谁能帮我看一下!谢谢

搜索更多相关主题的帖子: 负值 
2006-05-08 15:38
ibelieveican
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2006-4-28
收藏
得分:0 
不好意思,补充一下,ch[num].adr中adr的类型是long double型
2006-05-08 15:42
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
收藏
得分:0 
啊,美女,你好啊,把代码都粘上来我看看会不会.

日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-05-08 16:04
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
收藏
得分:0 
男的,女的啊,楼主

日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-05-08 16:05
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 
str1 <<= 8;

这里会把作为符号位的最高位改变了,所以你可能会得不到负数

我估计的 -_________-!!

因为你描述的不是很清楚`所以我也只能猜到这里

淘宝杜琨
2006-05-08 16:20
ibelieveican
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2006-4-28
收藏
得分:0 
首先谢谢大家的回复!!

其次,我希望还能继续得到大家的帮助!

其实这是个很大的程序,所以也不知道怎样才能把我的
意思说清楚,真急人啊!!
我有一个文件,格式如下列,要把这样的文件全部翻译成二进制
,并进行解算。
上面写的那段函数,就是要把每一段码的第45个到第48个翻译成二进制,
再乘以2的-8次方。
8B 50 30 A2 D2 AB 00 00 05 03 F8 E4 98 91 07 0C 77 2C 06 E4 27 67 FF FF FD 94 FF FF FD 60 00 00 02 89 15 22 00 00 00 00 03 08 2D 33 0B 13 23 1C FF EB 44 29 26 4C 59 7D 10 08 2B 38 06 C9 DE E6 FE 07 0B 10 28 81 15 79 13 08 2C 1E 17 10 EC 4D 03 C9 2C 98 28 E2 51 F5 0F 08 23 77 0A 1C EF A9 FE F9 7B 69 2A 82 61 E4 19 08 27 00 04 85 C1 F0 F9 9B 0F 65 2C 70 EA 6E 17 08 2D 1E 12 36 82 87 FB C1 EC 3D 2B E9 5B 7D 0D 08 2B 65 0C 1A 4A C4 FE FE 32 48 2C 6C 32 D5 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 15 05 24 12 00 00 00 00 FB F4 3C F9 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 3D 29

8B 50 30 A2 D2 AC 00 00 05 03 F8 E4 98 82 07 0C 77 3E 06 E4 27 71 00 00 02 F8 FF FF F7 1E 00 00 0D 71 15 22 00 00 00 00 03 08 2E 33 0B 12 FA 50 FF E9 57 8E 26 4C 5A 7B 10 08 2B 38 06 C5 EC 08 FE 05 61 51 28 81 2D 7D 13 08 2C 1E 17 18 7B FC 03 C6 44 A2 28 E2 23 E3 0F 08 24 77 0A 1A E1 0A FE F6 01 94 2A 82 6F 35 19 08 28 00 04 78 FE 8E F9 9D 4A 12 2C 71 37 58 17 08 2D 1E 12 2E 06 BE FB C0 99 3C 2B E9 8E EE 0D 08 2B 65 0C 18 4A 4A FE FC D1 BC 2C 6C 3F 31 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 15 05 23 12 00 00 00 00 FB F1 C0 0C 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 38 B2

8B 50 30 A2 D2 AE 00 00 06 03 F8 E4 98 44 07 0C 77 84 06 E4 27 80 00 00 01 3C 00 00 06 EC FF FF FB 95 10 1A 00 00 00 00 03 08 2E 33 0B 12 AD 48 FF E8 71 EC 26 4C 5C AF 10 08 2C 38 06 BE 0B 51 FE 06 15 88 28 81 5D 6E 13 08 2B 1E 17 27 A0 44 03 C4 59 45 28 E1 C7 91 0F 08 26 77 0A 16 C7 61 FE F6 15 6F 2A 82 87 81 19 08 29 00 04 5F 7D 59 F9 9A F5 6A 2C 71 D2 78 17 08 2E 1E 12 1D 14 93 FB C0 21 A8 2B E9 F6 10 0D 08 29 65 0C 14 4D C1 FE FB 80 0A 2C 6C 57 24 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 15 05 21 12 00 00 00 00 FB F0 3D 9F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 38 8E

这样子,不知道能不能让大家明白我的意思,希望能得到大家的帮助。
2006-05-08 16:39
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
收藏
得分:0 

日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-05-08 16:48
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 
你的意思是不是这样:

先把一个十六进制的字符串
变成2进制,然后乘以一个指数。

输入 AB 然后转换成 10101011
但是我不理解,什么叫"乘以一个指数"? 谁和谁乘?

淘宝杜琨
2006-05-08 16:50
feng1256
Rank: 4
等 级:贵宾
威 望:14
帖 子:2899
专家分:0
注 册:2005-11-24
收藏
得分:0 

首先每段16进制数是8位的,你要一位一位处理,每次 str1<<=4;
注意文件每两位后有个空格

至于负号你读第一位时 判断下如果首位是1 处理下就行


叁蓙大山:工謪、稅務、嗣發 抱歉:不回答女人的问题
2006-05-08 16:56
ibelieveican
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2006-4-28
收藏
得分:0 
不好意思,可能是我表达不清,
我的意思是,先转换为2进制,然后乘以2的-8次方。
2006-05-08 17:06
快速回复:为什莫我写的这段程序没有负值??
数据加载中...
 
   



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

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