编写一个程序,从键盘读取一个整数值到一个 int 类型的变量中,并使用一个位运算符(即不是 % 运算符!)来确定除以 8 时的正余数。
例如,29 = (3x8)+5 和 14 = (2x8)+2 除以 8 时分别具有正余数 5 和 2。
我试图搜索如何解决它。我所做的是将给定的示例数字分解为二进制。
29 => 101001
8 => 001000
5 => 000101
我不知道我应该用 29 和 8 做什么操作才能得到二进制结果 5。
在搜索时,有些人说我们应该做(和操作 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。我不知道我写的是对还是错。