int x1 =-2 ;//any value
if(x1 < 0)
x1 = 0;
我正在尝试使用按位运算符
int result = !(x1 >> 31) & (((~x1 + 1) >> 31) & 1);
x1 = result !=0 ? x1:result;
我不想使用条件运算符来探索更多二元运算符的使用。这背后没有任何其他内涵。如果有任何方法,请告诉我。 有没有办法这样做?
答案 0 :(得分:5)
假设32位整数和2位恭维,以下是否可以?
unsigned int x = (unsigned int)-2;
x &= (x >> 31) - 1;
我使用unsigned
因为根据标准
E1 >> E2
的结果是E1
右移E2
位位置。 ....如果E1
有签名类型和负值,那么 结果值是实现定义的。