| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3186 人关注过本帖
标题:右移 32 位怎么没变化?
只看楼主 加入收藏
lqab1983
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2013-11-29
结帖率:16.67%
收藏
已结贴  问题点数:10 回复次数:11 
右移 32 位怎么没变化?
#include "stdio.h"
#include "stdlib.h"
#include "string.h"

int main()
{
 char a[20]="2232.0822";
 int b = 0;
 b = (int)(atof(a)*10e3);
 printf("b is %d\r\n", b);
 printf("%x\r\n",b);
  printf("%x\r\n",b>>16);
   printf("%x\r\n",b>>8);
    printf("%x\r\n",b&0xff);
 
 system("pause");
}

为什么b没有发生移位,我在处理GPS经纬度遇到的问题。
想把字符串“2232.0822”想转换成数字,在右移放到4个字节里保存,就这个目的为什么不行?

有什么解决办法
搜索更多相关主题的帖子: include system 经纬度 字符串 
2014-06-28 16:58
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:3 
不知道楼主想干什么

右移n位相当于除2的n次方 右移16位相当于除以2的16次方也就是65536 如果右移32位 因为int就是32位 结果是0

总之 不知道你到底想干啥
2014-06-28 18:55
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:3 
无法用文字把意图表达清楚,大致猜到是什么意思,但不确定,坐等楼主把话说清楚——说清楚的过程中估计也把问题顺带解决了。

授人以渔,不授人以鱼。
2014-06-28 20:32
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:3 
在百度里搜"右移32位"出来的结果,
http://zm6.

总有那身价贱的人给作业贴回复完整的代码
2014-06-28 20:57
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
楼主的大概意思是他有一块64位的内存,想把经度和维度数据分别储存在该内存的高32位和低32位,故以为要移动32位。

授人以渔,不授人以鱼。
2014-06-28 21:02
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
对int(带符号的整数)做右移位操作(不是移多少位的问题),真是无语。

授人以渔,不授人以鱼。
2014-06-28 21:29
lqab1983
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2013-11-29
收藏
得分:0 
我的本意是比如把经度116.817153的字符串,因为GPS吐得语句是ASCII码,先转换成float类型,再变成整数,在移位到4个字节以16进制数去保存,最后变成06 f6 7d 01 我该怎么做啊? 难道右移32为不行吗?
2014-06-30 09:31
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
在移位到4个字节以16进制数去保存


你变成int之后就相当于4字节的16进制数了
2014-06-30 09:45
lqab1983
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2013-11-29
收藏
得分:0 
那我怎么表示了。char a[4];要达到
a[0] = 0x06;
a[1] = 0xf6;
a[2] = 0x7d;
a[3] = 0x01;
该怎么处理啊
2014-06-30 09:56
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:3 
这种对精度有要求的,最好不要强制转换

直接解析字符串就可以

话说为什么不直接用字符串存储?


[fly]存在即是合理[/fly]
2014-06-30 10:39
快速回复:右移 32 位怎么没变化?
数据加载中...
 
   



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

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