题
让我们说,我想到的位移 i
两次留和储存价值 f
.
f = i << 2;
是正确的?究竟怎么做我这么做C/C++?
解决方案
是
f = i << 2
移位在许多有点繁琐的操作中都很有用。
这曾经是将数字乘以4的好方法。但是,如今,优化编译器往往会为您解决这个问题。
请记住,最左边的两个位被丢弃。
其他提示
作为补充说明:即使你的问题被标记为C++
,也许值得注意的是C和C ++在转移负值方面采取了略微不同的路径。在C ++中,对负值执行<<
或>>
的结果是实现定义的。在C <=>是实现定义的,而<=>生成未定义的行为。
是的, i << 2
, f = i << 2
, 或 f <<= 2
所有的东西的一个可能想做移位。
更多的转移注意事项:
你必须
>>
为好。在位的水平,>>
工作方式不同于签署和未签名类型。优先的
<<
和>>
是下面的+
和-
, ,它愚弄一些人,因为人们可能想象他们会更喜欢*
和/
.
为了完整起见,您可以查看此页面: uow TEXTBOOK - <!> gt; bitops.html
不隶属于 StackOverflow