【问题标题】:How do I perform an unsigned right shift (>>> in Java) in C/C++?如何在 C/C++ 中执行无符号右移(Java 中的 >>>)?
【发布时间】:2011-01-26 15:12:31
【问题描述】:

如何在 C/C++ 中执行无符号右移(Java 中为 >>>)?

【问题讨论】:

    标签: java c bit-manipulation


    【解决方案1】:

    >>> 是无符号右移,所以我认为在 C 中这与

    unsigned int foo;
    unsigned int bar = foo >> whatever;
    

    【讨论】:

      【解决方案2】:

      在 C 中,要获得无符号移位,只需对无符号类型进行移位。

      unsigned int result = (unsigned int)valueToBeShifted >> shiftAmount;
      

      请注意,不能保证有符号类型上的>> 会在 C 中为您提供有符号移位——这是实现定义的行为。但是,如果类型是有符号的,最常见的实现会产生有符号移位。

      【讨论】:

        猜你喜欢
        • 2019-06-25
        • 2014-10-17
        • 1970-01-01
        • 1970-01-01
        • 2013-01-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-25
        相关资源
        最近更新 更多