このコードがそのように機能する方法と理由を理解するのに苦労しています。この割り当ての私のパートナーはこの部分を完了しましたが、これがどのように、そしてなぜ機能するのかを知るために彼に連絡することはできません. 私はそれを理解するためにいくつかの異なることを試みましたが、どんな助けでも大歓迎です。このコードは、2 の補数と 32 ビット表現を使用しています。
/*
* fitsBits - return 1 if x can be represented as an
* n-bit, two's complement integer.
* 1 <= n <= 32
* Examples: fitsBits(5,3) = 0, fitsBits(-4,3) = 1
* Legal ops: ! ~ & ^ | + << >>
* Max ops: 15
* Rating: 2
*/
int fitsBits(int x, int n) {
int r, c;
c = 33 + ~n;
r = !(((x << c)>>c)^x);
return r;
}