2 つの数値 a と b があり、どちらも 64 ビットです。
コード:
a = a|b;
if(!(a&b)){ }
上記のシナリオでは、b の 34 番目のビットがオンで、a のいくつかのビットがオンになっています。したがって、状況によっては !(a&b) は 0 になるはずですが、コードが if ループに入っていて、これは間違っています。問題は、!(a&b) が 0 ではなく 1 を与えていることです。理由はありますか?
2 つの数値 a と b があり、どちらも 64 ビットです。
コード:
a = a|b;
if(!(a&b)){ }
上記のシナリオでは、b の 34 番目のビットがオンで、a のいくつかのビットがオンになっています。したがって、状況によっては !(a&b) は 0 になるはずですが、コードが if ループに入っていて、これは間違っています。問題は、!(a&b) が 0 ではなく 1 を与えていることです。理由はありますか?