我只能用!~ & ^ | + << >>
我正在用 C 写这个。
我正在尝试将数字 x 除以 2^n。所以我想如果我移动 x >> n 会起作用,但它不适用于奇数负整数。它最初看起来像这样:
int dl18(int x, int n) {
return (x >> n);
}
但是如果 x = -9 且 n = 1,则输出应该是 -4 但它是 -5。如果 x = -9 且 n = 0,则输出正确 (-9)。
提前致谢。
所以我发现这样做使它适用于一切,除非 n = 0 并且 x 是负数:
return (~(x >> 31) & (x >> n)) | ((x >> 31) & ((x >> n) + 1));