问题:
编写程序使用位操作计算整数对8取余得到的正余数。
如29=(3×8)+5和-14=(-2×8)+2,余数分别是5和2。
代码:
#include"stdafx.h" #include<iostream> using std::cout; using std::endl; using std::cin; int main(){ int a, b; cout << "输入你要计算的数:"<<endl; cin >> a; b = a & 7; cout <<"余数是:"<<endl<< b<<endl; return 0; }
分析:
这样算是因为8化成二进制数是00001000,每次增加一个8,也就是加一个00001000,所以前面的1都是8进位所得,也就是加8得到的,后面的是剩下的余数,所以计算得到后面的余数即可。