-4
A
回答
1
您可以通过转移做到这一点:
#include "stdio.h"
uint64_t bigNum = 5678216589648569852;
uint64_t merged = 0;
uint32_t partA = 0;
uint32_t partB = 0;
//split
partA |= bigNum;
partB |= bigNum >> 32;
//merge
merged = partB;
merged <<= 32;
merged |= partA;
相关问题
- 1. XOR高32位,低32位,64位数
- 2. 从32位到64位
- 3. MySQL 32位或64位 - Apache 32位Windows 64位?
- 4. 将32位实数转换为2x 16位字节
- 5. 32位OpenFileDialog - > 64位System32?
- 6. 64位debian和32位酒
- 7. Xcode&64位&32位问题
- 8. SharePoint 64位或32位
- 9. C# - 在32位和64位
- 10. 从32位变为64位
- 11. 32位64位兼容
- 12. 在32位和64位
- 13. 32位和64位性能
- 14. 64位OS/32位进程
- 15. Java JDK 32位与64位
- 16. 32位和64位的ODP.NET
- 17. 64位的32位除法
- 18. ODBC .NET 32位和64位
- 19. Gluegen 32位和64位库
- 20. 64位weblogic 32位oracle DB
- 21. Java 32位和64位
- 22. 32位和64位CPU/OS
- 23. SHGetFolderPath()32位与64位
- 24. 64位到32位Interop - 如何?
- 25. 代码从32位移植到64位
- 26. 从32位到64位将在装配
- 27. 从32位移植到64位
- 28. 简单的32位到64位转换?
- 29. 从32位移植到64位版本
- 30. C++ 64位时间戳到32位time_t
右移一个符号整数是实现定义的行为。 – owacoder
我认为这里没什么大不了的。也许如果在拆分和合并之间使用32位的。如果没有使用32位整数的内容,则应该无关紧要。我*猜测*分裂只是发送一些只支持32位的协议的int。 –
使用带符号整数还有另一个问题。如果'partA'或'partB'最终为负数,会影响'a64'或'b64'中的较高位,这会给出错误的结果。作为一般规则,总是使用'unsigned'整数进行按位运算。 – owacoder