#include<iostream>
using namespace std;
*编写一个程序,将从键盘输出的一个整数值读入int型变量,
*并使用按位运算符之一(不能用%运算符!)确定这个值除以8
*时的正余数。例如,29=(3*8)+5和-14=(-2*8)+2的正余数
*分别是5和2
*说明:29的二进制是11101,8的二进制是1000,根据
*二进制128 64 32 16 8 4 2 1 从8~128...都是8的倍数;
* 0 0 0 1 1 1 0 1
*所以只需要让00011101和00000111进行与进算就可以了
int main()
{
int a,b;
a=-2361;
b=8;
cout<<a<<" % "<<b<<"="<<(a%8)<<endl;
cout<<a<<" % "<<b<<"="<<(a&7)<<endl;
cin.get();
return 0;
}
//以下是Visual C++ 2005 入门经典的求解方法
// Soln2_2.cpp
#include <iostream>
using std::cin;
using std::cout;
using std::endl;
int main()
{
int number;
cout << "Enter a number: ";
cin >> number;
cout << "Thank you. The remainder after dividing your number by 8 is "
<< number - ((number >> 3) << 3);
cout << endl;
return 0;
}
其实,余数就是被移走的那N位。