gpt4 book ai didi

c - 如何将所有位设置为 1 或零取决于原始数字

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

我想知道如何根据原始数字将所有位设置为 1 或 0(有符号整数是安全的)。例如,

int filter = !!number; //return either 1 or zero and I would like to set all bits of filter to either one or zero depends on filter.

我想仅通过使用这些运算符 (! ~ & ^ | + << >>) 来设置“过滤器”的所有位

我非常感谢任何帮助。

最佳答案

假设整数表示为 2 的补码:

int filter = number ?-1 :0;

或者(引用问题的修订版 2))

int filter = !number -1;

int filter = !number + (-1); /* Does not use the - operator. */

int filter = !number + (union {unsigned u; int i;}){UINT_MAX}.i; 

(不确定后者是否调用了UB。)

或者,由 Kamil's (deleted) comment 提醒:

int filter = !number + ~0;

(在任何情况下都应该有效)

关于c - 如何将所有位设置为 1 或零取决于原始数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52680736/

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