将 uint64 转换为 uint32 并截断

问题描述 投票:0回答:1

当我们将

uint64_t
转换为
uint32_t
时,我看到截断是通过 cppreference 发生的。 但是哪些位被截断了?高的还是低的? 这是如何决定的,为什么?

c++ unsigned truncation
1个回答
3
投票

结果值是等于原始 1 模 232 的唯一值,可以用

uint32_t
表示。换句话说,只有值的 base-2 表示中的 32 个最低有效位保留,所有其他(在您的情况下是 32 个最高有效位)都被截断。

uint64_t
的对象表示中这些位是高位还是低位(或都不是)是实现定义的,尤其取决于体系结构的字节顺序。

© www.soinside.com 2019 - 2024. All rights reserved.