![](/img/trans.png)
[英]C: How to save the result of 2 32 bit unsigned integer into a signed integer
[英]How to make signed 64 bit integer using one signed integer and one unsigned integer on 32 bit processor
在具有32位编译器的32位处理器上,我想使用每个有符号和无符号整数之一来生成64位有符号整数。 不使用任何预定义的宏或类型。
32位编译器将为您处理64位数字。 所以你不太可能真的需要这个。 但我会咬人。 从表面上看,这是一个非常简单的问题。
#include <stdint.h>
static inline int64_t make_int64(uint32_t low, int32_t high) {
return (int64_t)((uint64_t)high << 32) | low;
}
static inline void split_int64(int64_t value, uint32_t *low, int32_t *high) {
*low = value & 0xFFFFFFFF;
*high = (int32_t)((uint32_t)(value >> 32));
}
但它总是棘手/危险混合有符号和无符号整数。 手动构造int还需要您了解处理器如何格式化它们。 我们假设它的2s赞美小端。
如果您完整地描述了您的要求,将会很有帮助。 例如,上面的示例make_int64(0,-1)= -4294967296但是make_int64(1,-1)= -4294967295。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.