假设我想向左移位i
两次并将值存储在f
.
f = i << 2;
那是对的吗?我究竟如何在 C/C++ 中做到这一点?
是的。
f = i << 2
移位在许多位旋转操作中很有用。
这曾经是一个将数字乘以四的好方法。然而,这些天来,优化编译器往往会为您解决这个问题。
请记住,最左边的两个位被丢弃。
作为附加说明:即使您的问题被标记C++
为 ,可能值得注意的是,C 和 C++ 在转移负值方面采取的路径略有不同。在 C++ 中,do<<
或>>
负值的结果是实现定义的。在 C>>
中是实现定义的,而<<
产生未定义的行为。
是的,i << 2
,f = i << 2
,或者f <<= 2
是人们可能想要做的所有事情来移位。
要记住的更多转变事项:
你也有>>
。在位级别,>>
有符号和无符号类型的工作方式不同。
<<
和的优先级>>
低于+
和-
,这使某些人感到困惑,因为人们可能会认为他们更像*
和/
。
为了完整起见以帮助您进行位操作,您可以查看此页面:uow TEXTBOOK -> bitops.html