对于32位处理器架构,unsigned long long和typedef{unsigned int low,unsigned int high}u_int64

papaofdoudou
新星创作者: 人工智能技术领域
领域专家: 嵌入式与硬件开发技术领域
2015-06-12 10:46:07
对于32位处理器架构,unsigned long long和typedef{unsigned int low,unsigned int high}u_int64_t 有什么不同?

unsigned longlong无法得到硬件上的支持,但是编译器可以支持unsigned long long, 但如果有三方库定义了typedef{unsigned int low,unsigned int high}u_int64_t,那该如何和unsigned long long对应上呢。
...全文
641 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
papaofdoudou 2015-06-15
  • 打赏
  • 举报
回复
引用 2 楼 xinzha 的回复:
用unsigned long long的话,就是告诉编译器我这是64位数,日后用于其上的加减乘除移位等等运算,编译器就帮你自动地实现32位到64位的转换,比如unsigned long long temp =0xffffffff * 2;就能得到一个正确的结果。而实际编译器也是用typedef{unsigned int low,unsigned int high}u_int64_t这样的方式在32位总线上实现了64位数,中间的算法转换对源代码隐藏了而已。 而如果你自己应用了typedef{unsigned int low,unsigned int high}u_int64_t这样的结构,整个的算法过程就得你自己实现了。
谢谢朋友,也就是说,unsigned long long和 这个结构其实是可以直接map的,我可以用unsigned long long的高低四个字节分别对这个结构的两个成员赋值对吗?
猪头三小队长 2015-06-14
  • 打赏
  • 举报
回复
用unsigned long long的话,就是告诉编译器我这是64位数,日后用于其上的加减乘除移位等等运算,编译器就帮你自动地实现32位到64位的转换,比如unsigned long long temp =0xffffffff * 2;就能得到一个正确的结果。而实际编译器也是用typedef{unsigned int low,unsigned int high}u_int64_t这样的方式在32位总线上实现了64位数,中间的算法转换对源代码隐藏了而已。 而如果你自己应用了typedef{unsigned int low,unsigned int high}u_int64_t这样的结构,整个的算法过程就得你自己实现了。
papaofdoudou 2015-06-12
  • 打赏
  • 举报
回复
自己来顶一下

21,618

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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