gpt4 book ai didi

c - 如何在C中使用AND运算符限制signed int?

转载 作者:行者123 更新时间:2023-11-30 21:25:29 27 4
gpt4 key购买 nike

如何在C中使用AND运算符限制signed int?例如

signed int i = -300;
signed int j = i & 0x1F; -> expected value -31

这样可以吗?如果不是,哪个是最简单的?

更新:是否可以使用 & 运算符将有符号整数限制在给定范围内?如果不是,最简单的方法是什么?

最佳答案

目前尚不清楚您想要实现什么目标。在 int 的架构上,您可以使用单个掩码来屏蔽低位,同时保留符号位。表示为符号/幅度。您不太可能想到这种特殊的情况。那你的目标是什么?

请注意,屏蔽与限制范围不同。除了最微不足道的情况外,限制范围无法通过掩码来实现(微不足道的情况限制为 0..0 和限制为 INT_MIN..INT_MAX )

如果您只想限制范围,请使用:

int j = i < -31 ? -31 : i > 31 ? 31 : i;

您可以替换任何 int最小值和最大值的值。 i在此表达式中计算两次:如果替换复杂表达式,最好使用临时变量。在某些情况下,编译器可以生成没有跳转的代码来进行这些测试,忘记尝试手动执行此操作。

关于c - 如何在C中使用AND运算符限制signed int?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29456006/

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