[英]Bit shifting left
假设我想将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-> bitops.html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.