如何获取4个无位重叠的24bit RGB互补可区分颜色?
满足要求的4个RGB颜色方案
核心规则说明
每个颜色占用u32低24位中完全独立的bit区块,确保任意两个颜色的位无交集,所有位组合操作(|/&/!)都能正确分离目标颜色。
颜色定义(u32值 + RGB解析)
- COLOR_1:
0x3F0000→ RGB(63, 0, 0)(深红)- 占用bit位:16-21(红色通道低6位)
- COLOR_2:
0x003F00→ RGB(0, 63, 0)(深绿)- 占用bit位:8-13(绿色通道低6位)
- COLOR_3:
0x00003F→ RGB(0, 0, 63)(深蓝)- 占用bit位:0-5(蓝色通道低6位)
- COLOR_4:
0xC000C0→ RGB(192, 0, 192)(深紫)- 占用bit位:6-7(蓝色高2位)、22-23(红色高2位)
位操作验证
以要求的示例操作为例:
uint32_t mix = COLOR_1 | COLOR_2 | COLOR_3; // 值为0x3F3F3F uint32_t result = mix & !COLOR_1; // 0x3F3F3F & 0xC0FFFF = 0x003F3F assert(result == COLOR_2 | COLOR_3); // 0x003F3F == 0x003F00 | 0x00003F → 成立
所有组合(如COLOR_1|COLOR_4、COLOR_2|COLOR_3|COLOR_4等)的数值均唯一,且移除任意颜色的位不会影响其他颜色的位信息。
配色说明
四个颜色在色环上呈近似90度分布(深红0°、深绿120°、深蓝240°、深紫300°),符合四元配色的视觉区分要求;黑色背景下所有颜色均清晰可见,无亮度不足问题。
内容的提问来源于stack exchange,提问作者Alex Lopez
相关产品推荐
相关产品推荐

