第七届蓝桥杯

xiaoxiao2021-02-28  21

消除尾一

下面的代码把一个整数的二进制表示的最右边的连续的1全部变成0,如果最后一位是0,则原数字保持不变。

如果采用代码中的测试数据,应该输出

00000000000000000000000001100111   0000000000000000000000000110000000000000000000000000000000001100   00000000000000000000000000001100

请仔细阅读程序,填写划线部分缺少的代码。

#include<stdio.h> void f(int x) { int i; for(i=0;i<32;i++) printf("%d",(x>>(31-i))&1); printf(" "); x=______________________; for(i=0;i<32;i++) printf("%d",(x>>(31-i))&1); printf("\n"); } int main() { f(103); f(12); return 0;

做这道题目的时候想了半天没想出来。x=x&(x+1)

做这道题目之后,才发现C语言中默认是没有以二进制的形式输出数据的,如果想以二进制的形式输出数据,需要自己编写代码。

二进制太长了,看着头晕,为了程序员的健康考虑,C语言摒弃了二进制表示法。

转载请注明原文地址: https://www.6miu.com/read-2650088.html

最新回复(0)