Tag: 补码

需要帮助理解K&R C第2章中的“getbits()”方法

在第2章,关于按位运算符的部分(第2.9节),我无法理解其中一个示例方法是如何工作的。 这是提供的方法: unsigned int getbits(unsigned int x, int p, int n) { return (x >> (p + 1 – n)) & ~(~0 << n); } 这个想法是,对于给定的数字x ,它将返回从位置p开始的n位,从右边开始计数(最右边的位是位置0)。 给定以下main()方法: int main(void) { int x = 0xF994, p = 4, n = 3; int z = getbits(x, p, n); printf(“getbits(%u (%x), %d, %d) = %u (%X)\n”, x, […]