gpt4 book ai didi

c++ - 一种基于最大值包装/溢出数字的算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:13:00 27 4
gpt4 key购买 nike

有人要挑战吗?我正在寻找一种有效的算法来为固定为最大值的数字实现换行/溢出行为。

例如,最大可能数值定义为:

#define MAX_NUMBER_VALUE 100

还有一个函数 translate,它接受一个带符号的 32 位或 64 位整数值,并使用 MAX_NUMBER_VALUE 常量“环绕”它:

int_fast8_t translate(int_fast32_t value) {

if (abs(value) > MAX_NUMBER_VALUE) {
return ...; // This!
}

return value;
}

预期的输入和输出:

translate(55)   => 55
translate(100) => 100
translate(101) => -100
translate(102) => -99
translate(200) => -1
translate(202) => 1
translate(300) => 99
translate(-40) => -40
translate(-100) => -100
translate(-101) => 100
translate(-102) => 99
translate(-200) => 1
translate(-201) => 0
...

值围绕数字“走动”,就好像它是一个圆形行星一样。这看起来确实类似于 C/C++ 处理 int 溢出情况的方式。不知道有没有一种快速高效的方法可以实现这种包裹?像移位或其他按位运算一样?

最佳答案

听起来您只是在描述 % 运算符,并对负数进行了一些谨慎的处理。

关于c++ - 一种基于最大值包装/溢出数字的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14261431/

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