gpt4 book ai didi

c - C 是否保存 << 或 >> 位移的进位位?

转载 作者:行者123 更新时间:2023-12-02 07:35:43 24 4
gpt4 key购买 nike

我读到 C 保存了移位的进位,它可以在特定于处理器的 .h 中找到。

这是真的吗?我应该使用它吗?还是应该自己解决?

最佳答案

在 C 中没有标准的方法来访问原始操作的进位位。

您将需要在更大的数据类型中执行转换:

uint16_t foo = ...;

uint32_t tmp = (uint32_t)foo << shift;
uint16_t result = (uint16_t)tmp;
uint16_t carry = (uint16_t)(tmp >> 16);

或通过执行相反的转变:

uint16_t result = foo << shift;
uint16_t carry = foo >> (16 - shift);

请注意,如果 shift == 0,第二种方法会调用未定义的行为,因此您需要单独处理这种情况。

关于c - C 是否保存 << 或 >> 位移的进位位?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16860226/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com