假设我想将i向左移位两次,并将值存储在f中。
f = i << 2;对吗?我该如何在C/C++中做到这一点?
发布于 2009-10-22 08:21:10
是。
f = i << 2移位在许多位旋转操作中很有用。
这曾经是一个很好的数乘以4的方法。然而,如今,优化编译器往往会为您解决这一问题。
请记住,最左边的两个位被丢弃。
发布于 2009-10-22 09:31:42
作为补充说明:尽管您的问题被标记为C++,但可能值得注意的是,C和C++在转移负值方面采取了略微不同的路径。在C++中,对负值执行<<或>>的结果是由实现定义的。在C中,>>是实现定义的,而<<产生未定义的行为。
发布于 2009-10-22 09:00:53
是的,i << 2、f = i << 2或f <<= 2都是人们可能想要做的移位操作。
更多需要牢记的转变事项:
,
>>。在位级别,>>对于有符号类型和无符号类型的工作方式是不同的。<<和>>的优先级低于+和-,这会愚弄一些人,因为人们可能会认为它们更像*和morehttps://stackoverflow.com/questions/1604368
复制相似问题