gpt4 book ai didi

c - 二进制移位运算符。如何确定操作后的值?

转载 作者:太空宇宙 更新时间:2023-11-04 06:36:26 27 4
gpt4 key购买 nike

是否有简单的方法来确定有符号数左移或右移的输出? This页面将左移描述为 expr1*2*expr2右移为expr1/2*expr2 , 但是当我尝试类似 27 << 5 的东西时在 C 中,我得到一个大于 27*2*5 = 270 的值.此外,对于负输入,例如 -27 << 4-120 >> 5 ,这些操作是如何工作的?轮类工作时是否需要考虑特殊情况?

最佳答案

移位相当于乘以2 的幂,而不仅仅是参数乘积的两倍。换句话说,27 << 5 == 27 * 25。右移等同于底除法,但它没有为负操作数定义。

如果乘以或除以固定的 2 次幂,最好用 */ 运算符写出来。如果可能,编译器会将其转换为更快的移位操作,并且您可以避免围绕负数、操作顺序等出现粗糙边缘。

有很多资源可以帮助您深入挖掘(或者确实应该在 MSDN 之前咨询非平台特定问题),例如 Wikipedia .

关于c - 二进制移位运算符。如何确定操作后的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14472407/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com