首页
学习
活动
专区
圈层
工具
发布

位左移
EN

Stack Overflow用户
提问于 2009-10-22 08:19:23
回答 4查看 15.7K关注 0票数 1

假设我想将i向左移位两次,并将值存储在f中。

代码语言:javascript
复制
f = i << 2;

对吗?我该如何在C/C++中做到这一点?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-10-22 08:21:10

是。

代码语言:javascript
复制
f = i << 2

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

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

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

票数 9
EN

Stack Overflow用户

发布于 2009-10-22 09:31:42

作为补充说明:尽管您的问题被标记为C++,但可能值得注意的是,C和C++在转移负值方面采取了略微不同的路径。在C++中,对负值执行<<>>的结果是由实现定义的。在C中,>>是实现定义的,而<<产生未定义的行为。

票数 8
EN

Stack Overflow用户

发布于 2009-10-22 09:00:53

是的,i << 2f = i << 2f <<= 2都是人们可能想要做的移位操作。

更多需要牢记的转变事项:

  • ,你也有>>。在位级别,>>对于有符号类型和无符号类型的工作方式是不同的。
  • <<>>的优先级低于+-,这会愚弄一些人,因为人们可能会认为它们更像*和more
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1604368

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档