2016年蓝桥杯省赛A组c++第5题(计算机组成原理)
/* 下面的代码把一个整数的二进制表示的最右边的连续的1全部变成0 如果最后一位是0,则原数字保持不变。 如果采用代码中的测试数据,应该输出: 00000000000000000000000001100111 -> 00000000000000000000000001100000 00000000000000000000000000001100 -> 00000000000000000000000000001100 请仔细阅读程序,填写划线部分缺少的代码。 */ #include <stdio.h> void f(int x) { int i; for(i=0; i<32; i++) printf("%d", (x>>(31-i))&1); printf(" "); //x = _______________________; x=x&(x+1); for(i=0; i<32; i++) printf("%d", (x>>(31-i))&1); printf("\n"); } int main() { f(103); f(12); return 0; }
tz@COI HZAU
2018/3/14