假设我想向左移位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