特定のビットが反転している場所でプログラムを動作させようとしています。私はflipbit(int *p, int m)
と呼ばれるこの機能を持っています。ユーザは数字とビット番号を入力する必要があります。たとえば、ユーザが数字8
(00001000
)とビット番号2
を与えたとします。したがって、8の2番目のビットを反転して00001010
にする必要があります。これをどのようにプログラムできますか?整数で特定のビットを反転する(C言語)
EDIT:私は愚かなミスをしました。0から数えたいので、反転した8の2番目のビットは実際には00001010
の代わりに00001100
です。
#include <stdio.h>
#include <stdlib.h>
void flipbit(int *p, int m) {
int digit;
digit = *p;
int bit;
bit = &m;
int result;
//printf("The numbers are %d %d", digit, bit);
printf("%d", result);
}
int main() {
int number1;
int number2;
printf("Give number and bit: ");
scanf("%d, %d",&number1, &number2);
flipbit(&number1, &number2);
return 0;
}
この質問には、参考になる回答があります:http://stackoverflow.com/questions/47981/how-do-you-set-clear-and-toggle-a-single-bit-in-cc –
ここにヒントがあります:コードを開発するときは、常に警告を有効にしてコンパイルしてください(たとえば、 '-Wall -pedantic'をコマンドラインオプションに追加してください)。そうすることで、関数の2番目の引数が正しく処理されなかったことが警告されてしまいます。 –
コードを変更しないでください。それは既存の回答を無効にします。 – dbush