textattr为何要左移四位
Turbo C 另外还提供了一个函数,可以同时设置文本的字符和背景颜色,这个函数的调用格式为: void textattr(int attr);
其中: attr的值表示颜色形式编码的信息,每一位代表的含义如下:
位 7 6 5 4 3 2 1 0
B b b b c c c c
↓ ┕━━━┙ ┖─────┘
闪烁 背景颜色 字符颜色
字节低四位cccc设置字符颜色(0到15),4--6三位bbb设置背景颜色(0到7),第7位B设置字符是否闪烁。假如要设置一个兰底黄字,定义方法如下: textattr(YELLOW+(BLUE<<4)); 若再要求字符闪烁,则定义变为: textattr(128+YELLOW+(BLUE<<4);
注意:
(1) 对于背景只有0 到7 共八种颜色,若取大于7 小于15的数,则代表的颜色与减 7后的值对应的颜色相同。
(2) 用textbackground()和textcolor() 函数设置了窗口的背景与字符颜色后,在没有用clrscr()函数清除窗口之前,颜色不会改变,直到使用了函数clrscr(),整个窗口和随后输出到窗口中的文本字符才会变成新颜色。
(3) 用textattr()函数时背景颜色应左移4位,才能使3位背景颜色移到正确位置。
下面这个程序使用了关于窗口大小的定义、颜色的设置等函数,在一个屏幕上不同位置定义了7个窗口,其背景色分别使用了7种不同的颜色。
以上这段话中“注意”的第三点中说“背景颜色应左移四位才能使3位背景颜色移到正确位置”,这句话不是很明白,请问为何要“左移四位”呢?谢谢!