Math 字数学解释中位组的十进制值
如何获取R/G/B值Math 字数学解释中位组的十进制值,math,rgb,bit,16-bit,Math,Rgb,Bit,16 Bit,如何获取R/G/B值 11111 111111 11111 > 16 bit R G B 对此有一个简单的解释吗?为什么要将十进制值除以其他位以得到单个组值?如果要得到R,必须向右移动11位,以便G和B消失。所以 R=x>>11 但是每一个1位的移位相当于除以2,所以上面的表达式相当于 R = x/2048 (2048 are the 6+5 G+B 11 bit) G = x-R*2048/32 (32 are the B ) 所以你得到了R 要得到G,根据
11111 111111 11111 > 16 bit
R G B
对此有一个简单的解释吗?为什么要将十进制值除以其他位以得到单个组值?如果要得到R,必须向右移动11位,以便G和B消失。所以
R=x>>11
但是每一个1位的移位相当于除以2,所以上面的表达式相当于
R = x/2048 (2048 are the 6+5 G+B 11 bit)
G = x-R*2048/32 (32 are the B )
所以你得到了R
要得到G,根据公式,你可以先去掉R,这是你之前得到的R,但向后移动11位(或乘以2048)。现在,完成此操作后,您将获得如下数字:
R=X/(2^11)=x/2048
将5位向左移位(或除以32位),得到结果
请注意,在实践中,您可以更轻松地执行以下操作:
111111 11111
你可以把它看作是掩码和移位注意你的操作符优先级:你的
G
计算在我所知道的每种编程语言中都是错误的(…除了Postscript,但那只是因为它是一种后缀语言,所以你不可能犯同样的错误).最好是最后一个和0x3F
——你不知道它在哪里。
B=(x and 0x1F)
G=((x>>5) and 0x3F)
R=((x>>11) and 0x1F)