单词数学解释中位组中的十进制值


11111 111111 11111  > 16 bit
  R      G     B

如何获取 R/G/B 值?

R = x/2048 (2048 are the 6+5 G+B  11 bit)
G = x-R*2048/32 (32 are the B )

对此有一个简单的解释吗? 为什么十进制值要除以其他位才能得到单个组值?

如果你想

得到R,你必须在右边移动11位,这样G和B就会消失。所以

R=x>>11

但是每个 1 位的移位相当于除以 2,所以上面的表达式等价于

R=X/(2^11)=x/2048

所以你得到了R。

要获得 G,根据公式,您可以先删除 R,这是您之前获得的 R,但后移 11 位(或乘以 2048(。现在完成此操作,您有一个数字,例如:

111111 11111

向左移动 5 位(或除以 32 位(,你得到结果。

请注意,在实践中,您可以更轻松地执行此操作:

B=(x and 0x1F)
G=((x>>5) and 0x3F)
R=((x>>11) and 0x1F)

最新更新