我正在做一个家庭作业问题,我已经得到了正确答案,但这是因为沮丧地增加了操作员,所以我希望有人可以为我澄清这个问题。
我正在测试数字是正数还是负数,如果x>则返回1 0,否则返回0。只使用位操作! 〜& ^ | +<< >>
这是我的答案:!(x>>> 31 |!x)
当我在纸上解决这个问题时,我对它的理解就崩溃了。
我理解错误是什么?
答案 0 :(得分:1)
我认为你在寻找:
size_t shift = sizeof(x) * 8 - 1;
bool ans = x | ~(1 << shift);
答案 1 :(得分:1)
你关注的地方是#2: