整数値をキーボードから int 型の変数に読み込み、8 で割ったときの正の剰余を決定するためにビット演算子の 1 つ (つまり、% 演算子ではない!) を使用するプログラムを作成します。
たとえば、29 = (3x8)+5 と 14 = ( 2x8)+2 を 8 で割ると、それぞれ正の剰余 5 と 2 になります。
どうすれば解決できるのか調べてみました。私がしたことは、与えられた例の数値をバイナリに分解することです。
29 => 101001
8 => 001000
5 => 000101
結果5をバイナリで取得するために29と8で何をすべきかわかりません。
検索中に、何人かの人が私たちがやるべきだと言っています (& 7 での操作)
remainder = remainder & 7 ;
次に、Value自体でこれを実行しようとしました
value = value & 7 ;
そしてこれが私のコードですそれをやった後...
#include <iostream>
using std::cout;
using std::endl;
using std::cin;
int main()
{
int value = 0;
int divisor = 8;
int remainder = 0;
cout << "Enter an integr and I'll divide it by 8 and give you the remainder!"
<<endl;
cin >> value;
value = value & 7;
remainder = value & divisor;
cout << remainder;
return 0;
}
値 29 を使用すると、結果が 0 になりました。自分が書いたことが正しいかどうかはわかりません。