繁体   English   中英

左移

[英]Bit shifting left

假设我想将i左移两次,然后将值存储在f

f = i << 2;

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

是。

f = i << 2

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

这曾经是将数字乘以4的好方法。 但是,如今,优化编译器往往会为您解决这一问题。

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

需要特别注意的是:即使您的问题被标记为C++ ,也可能值得注意的是C和C ++在转移负值方面采取了略有不同的路径。 在C ++中,对负值执行<<>>的结果是实现定义的。 在C中>>是实现定义的,而<<产生未定义的行为

是的, i << 2f = i << 2f <<= 2都是人们想要做的所有移位位的事情。

需要记住的更多变化:

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

  • <<>>的优先级低于+-的优先级,这使某些人感到愚蠢,因为人们可能会想象他们更像*/

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM