什么<<运算符在C ++中做?

时间:2012-11-10 15:39:39

标签: c++

  

可能重复:
  What is the “<<” operator in C++?

在我看到的一段代码中,发生了以下情况:

... (header[4] << 8) + header[5] ...

我对编程很新,从未见过&lt;&lt;操作员之前。谷歌搜索没有提供任何结果。任何快速指示将不胜感激!

1 个答案:

答案 0 :(得分:5)

<<运算符将位移到 left N位,其中N位于运算符之后。在您的示例中,header[4]地址处的位向左移位8位。

这有利于它有效地导致乘以256,因为2 ^ 8 = 256.如果它转移到header[4]处的值将< em>划分乘以2 ^ 8 = 256。

一些真实的比特级示例:

  • 2的值(二进制为0010)转移到 2位变为1000,结果为8。
  • 7的值(二进制为0111)向 left 移位2位变为0001),这导致值为1.(7/4为1.75,由于无法表示,因此向下舍入整数二进制值中的小数)
  • 31的值(二进制为11110)向移位3位变为00011,导致值为3.(实际上它变为3.785但是它向下舍入)

所以最后,经常有一点移位意味着乘法(向左移位)或除法(向右移动),因为这就是它产生的结果。也就是说,你实际上可以通过幂来代替乘法和除法。具有位移的两个值,或者用乘法替换位移。编译器通常更喜欢用位移数替换乘法和除法,因为计算机移位比实际进行实数乘法或除法更快。