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

时间:2013-11-20 20:42:23

标签: math rgb bit 16-bit

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 )

有一个简单的解释吗?为什么十进制值应该被其他位除以得到单组值?

1 个答案:

答案 0 :(得分:0)

如果你想获得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)