1

假设我想向左移位i两次并将值存储在f.

f = i << 2;

那是对的吗?我究竟如何在 C/C++ 中做到这一点?

4

4 回答 4

9

是的。

f = i << 2

移位在许多位旋转操作中很有用。

这曾经是一个将数字乘以四的好方法。然而,这些天来,优化编译器往往会为您解决这个问题。

请记住,最左边的两个位被丢弃。

于 2009-10-22T00:21:10.090 回答
8

作为附加说明:即使您的问题被标记C++为 ,可能值得注意的是,C 和 C++ 在转移负值方面采取的路径略有不同。在 C++ 中,do<<>>负值的结果是实现定义的。在 C>>中是实现定义的,而<<产生未定义的行为

于 2009-10-22T01:31:41.633 回答
3

是的,i << 2f = i << 2,或者f <<= 2是人们可能想要做的所有事情来移位。

要记住的更多转变事项:

  • 你也有>>。在位级别,>>有符号和无符号类型的工作方式不同。

  • <<和的优先级>>低于+-,这使某些人感到困惑,因为人们可能会认为他们更像*/

于 2009-10-22T01:00:52.680 回答
0

为了完整起见以帮助您进行位操作,您可以查看此页面:uow TEXTBOOK -> bitops.html

于 2009-10-22T00:24:38.697 回答