double类型转化为二进制数的一个问题

sy_wang16 2017-05-09 07:18:16
在看例程的时候看到了这样一行代码:
unsigned long long nData = ((unsigned long long *)&myDouble)[0];

请问这是有什么作用呢?
...全文
596 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
幻夢之葉 2017-05-11
  • 打赏
  • 举报
回复
引用 7 楼 sy_wang16 的回复:
[quote=引用 6 楼 jianwen0529 的回复:] [quote=引用 2 楼 sy_wang16 的回复:] [quote=引用 1 楼 幻夢之葉的回复:]就是一个强转,看不出什么东西。作用得看后续怎么使用
后续就可以直接用nData与1按位与取出每一位了。[/quote] 那作用不就清楚了吗,就是取每一位的值!位运算只对整形数,所以double是不能直接运算的[/quote] 所以,我最开始提问的强转是吧double变成了64位整形数值对吧?[/quote] 可以这么说但是也不完全正确! unsigned long long的字节数 == double的字节数就是,否则少于就截取前面的部分,多于则附加额外的数据 总的来说:就是为了对这个double数做某些位操作而提供的必要的整形数化
赵4老师 2017-05-11
  • 打赏
  • 举报
回复
确切地说是将myDouble这个double型变量在内存中对应的8个字节拷贝到无符号64位整数nData中。 跟 memcpy((void *)&nData,(void *)&myDouble,8); 等价。
sy_wang16 2017-05-11
  • 打赏
  • 举报
回复
引用 6 楼 jianwen0529 的回复:
[quote=引用 2 楼 sy_wang16 的回复:] [quote=引用 1 楼 幻夢之葉的回复:]就是一个强转,看不出什么东西。作用得看后续怎么使用
后续就可以直接用nData与1按位与取出每一位了。[/quote] 那作用不就清楚了吗,就是取每一位的值!位运算只对整形数,所以double是不能直接运算的[/quote] 所以,我最开始提问的强转是吧double变成了64位整形数值对吧?
幻夢之葉 2017-05-11
  • 打赏
  • 举报
回复
引用 2 楼 sy_wang16 的回复:
[quote=引用 1 楼 幻夢之葉的回复:]就是一个强转,看不出什么东西。作用得看后续怎么使用
后续就可以直接用nData与1按位与取出每一位了。[/quote] 那作用不就清楚了吗,就是取每一位的值!位运算只对整形数,所以double是不能直接运算的
sy_wang16 2017-05-11
  • 打赏
  • 举报
回复
引用 4 楼 zhao4zhong1 的回复:
浮点数格式 http://bbs.csdn.net/topics/390676437
老师你好,可是我希望知道那个转换是什么作用,实在是比较难看懂。
赵4老师 2017-05-10
  • 打赏
  • 举报
回复
图灵狗 2017-05-10
  • 打赏
  • 举报
回复
参考http://www.cnblogs.com/cherri/archive/2011/02/22/1961503.html
sy_wang16 2017-05-10
  • 打赏
  • 举报
回复
引用 1 楼 幻夢之葉的回复:
就是一个强转,看不出什么东西。作用得看后续怎么使用
后续就可以直接用nData与1按位与取出每一位了。
幻夢之葉 2017-05-10
  • 打赏
  • 举报
回复
就是一个强转,看不出什么东西。作用得看后续怎么使用

64,282

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧