我不明白这个方法:z = z >> 1

use*_*560 1 c++ int unsigned

这是我的代码:

int main(){
 unsigned int z = 18;
 z = z>>1;
 std::cout << z << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

我知道我的结果将是9但我不明白"z = z >> 1"这是什么?>>什么意思?我以为它只用于cin << z; 请解释.谢谢

pax*_*blo 7

>>是正确的位移(a),它将值中的所有位右移一个给定值.对于无符号整数,>> 1实际上是两个整数除以.

二进制值18是:

0001 0010
   |   |
   |   +---  2
   +------- 16
            --
            18
Run Code Online (Sandbox Code Playgroud)

通过一位位置右移(位于右侧的"下降" 0位和从左侧进入的位)使您:

0000 1001
     |  |
     |  +--  1
     +-----  8
            --
             9
Run Code Online (Sandbox Code Playgroud)

(a)正是在这种特殊情况下.C++还允许>>用作类的运算符,例如std::cin >> myInputVar;,它将尝试从标准输入读取值并将其放入myInputVar变量中.