1. 程式人生 > >消除尾一

消除尾一

缺少 pri 數字 應該 閱讀 按位與 但是 inpu 位與


下面的代碼把一個整數的二進制表示的最右邊的連續的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 = ;

for(i=0; i<32; i++) printf("%d", (x>>(31-i))&1);

printf("\n");
}

int main()
{
f(103);
f(12);
return 0;
}

註意:只填寫缺少的內容,不要書寫任何題面已有代碼或說明性文字。

x加1以後末尾連續的1就變成0了,但是要進位1,所以與原來的數按位與可以保證去掉多余的1.

消除尾一