【问题标题】:Bitwise operators- need pseudocode translation位运算符 - 需要伪代码翻译
【发布时间】:2010-05-01 19:06:38
【问题描述】:

有人能把这句话翻译成伪代码(或者只是简单的英文)吗?

var c:uint = 0xFF << 24 | r << 16 | g << 8 | b;

【问题讨论】:

    标签: bit-manipulation bitwise-operators


    【解决方案1】:

    这是在一个四字节字中设置不同的字节。 << 24 移动三个字节,&lt;&lt; 8 移动一个字节,等等。所以这些被或在一起的组件将是

    0xFF000000         0xFF << 24
    0x00rr0000         r << 16
    0x0000gg00         g << 8
    0x000000bb         b
    

    给出一个看起来像这样的最终答案

    0xFFrrggbb
    

    给定变量名称,这可能是一个 32 位颜色值,红色、绿色和蓝色各有一个字节。第四个组件可以是透明度或 z 值(深度),或者只是备用位,以防其他地方需要它们。 ;-)

    【讨论】:

      【解决方案2】:

      它似乎正在从存储在r, g, b 变量中的 8 位通道值中创建一个复合 32 位颜色值 c,以及一个 0xFF 的 alpha 通道值(全为 1),即完全不透明。

      本质上,发生的事情是每个单独的值0xFF, r, g, b 被移动适当数量的位置(24、16、8 和 0),然后将它们组合在一起并存储到单个无符号整数变量中.

      【讨论】:

        【解决方案3】:

        它需要四个字节的值并组合成一个 32 位无符号整数。

        移位运算符&lt;&lt; 用于将值移动到特定位位置。

        0xFF

        r

        等等。将它们组合在一起创建值 0xFFrrggbb。

        这个操作的原因很可能是把 alpha、red、green 和 blue 分量放在一起变成一个 32 位的颜色值。

        【讨论】:

          猜你喜欢
          • 2015-01-06
          • 2013-11-25
          • 1970-01-01
          • 1970-01-01
          • 2012-10-17
          • 1970-01-01
          • 1970-01-01
          • 2021-07-07
          • 1970-01-01
          相关资源
          最近更新 更多