先看例子:
#include <iostream> using namespace std; int main() { int num = 32; int half = num >> 1; int quarter = num >> 2; int doublenum = num << 1; int quadruple = num << 2; cout << "half = " << half << endl; cout << "quarter = " << quarter << endl; cout << "doublenum = " << doublenum << endl; cout << "quadruple = " << quadruple << endl; return 0; }
half = 16
quarter = 8
doublenum = 64
quadruple = 128
按位右移
数字为32=25,二进制为10000,右移一位为01000(左侧补零),即$2^4=16$。右移二位为00100,即$2^3=8$。
按位左移
右移一位为100000(右侧补零),即$2^6=64$。右移二位为1000000,即$2^7=128$。
注意:
不能出现cout<< 2>>1 <<endl; 必须得打上括号 cout<< (2>>1) <<endl; 因为>>和<<运算级是一样的,并且这里是输入输出运算符,编译器会无法识别。