当我们将
uint64_t
转换为 uint32_t
时,我看到截断是通过 cppreference 发生的。
但是哪些位被截断了?高的还是低的?
这是如何决定的,为什么?
结果值是等于原始 1 模 232 的唯一值,可以用
uint32_t
表示。换句话说,只有值的 base-2 表示中的 32 个最低有效位保留,所有其他(在您的情况下是 32 个最高有效位)都被截断。
uint64_t
的对象表示中这些位是高位还是低位(或都不是)是实现定义的,尤其取决于体系结构的字节顺序。