位掩码(Bitmask)
    在配置文件中大量使用了位掩码，因此这里有必要详细说明一下。对计算机数字逻辑有一定基础的机油应该知道，知道的机油跳过，这里为不知道位掩码的机油解释一下。
    位掩码就是用来取得一个整数中某个（或某些）位上的数据的一个整数值。
因此，按照位掩码的定义，我们说配置文件中某个值是位掩码是不正确的，但这种说法似乎大家都已经接受了，那么我们就“将错就错”，使用这种说法。
    在手机中有很多设置项可设置的值往往只有“是/否”、“开/关”、“显示/隐藏”、“启用/禁用”等等。这些只有两个值的设置项只需要1个二进制位表示就足够了。
    然而在计算机中，最小单位不是“位”，而是“字节”，并且大多数时候使用的整数是“int”类型，占用4个字节。如果为每一个设置使用一个int值，那么大大浪费了存储资源，特别是对于手机这种存储空间十分有限的设备来说浪费更严重！
    因此，我们可以将很多相似的设置合并在一起，用一个int表示，一个int可表示32位二进制，那么每一位可以表示一种设置，就可以表示32种只有两个可选项的设置，大大节省了资源！
    拿灯光目标来举例：
    可以用不同的二进制位表示不同的灯光目标，该位上的值为1，表示打开该灯光目标的灯光，否则关闭。从低位到高位，即从右向左：
	第1位=PrimaryDisplay   =0000000000000001=0x1
	第2位=PrimaryKeyboard  =0000000000000010=0x2
	第3位=SecondaryDisplay =0000000000000100=0x4
	第4位=SecondaryKeyboard=0000000000001000=0x8
	第5位=CustomTarget1    =0000000000010000=0x10
	第6位=CustomTarget2    =0000000000100000=0x20
	第7位=CustomTarget3    =0000000001000000=0x40
	第8位=CustomTarget4    =0000000010000000=0x80
	第9位=CustomTarget5    =0000000100000000=0x100
	第10位=CustomTarget6   =0000001000000000=0x200
	第11位=CustomTarget7   =0000010000000000=0x400
	第12位=CustomTarget8   =0000100000000000=0x800
	第13位=CustomTarget9   =0001000000000000=0x1000
	第14位=CustomTarget10  =0010000000000000=0x2000
	第15位=CustomTarget11  =0100000000000000=0x4000
	第16位=CustomTarget12  =1000000000000000=0x8000
    只需要低16位就可以表示所有的灯光目标的灯光开关了。要打开哪个灯光目标上的灯光，就将表示该灯光目标的位上置1，反之，要关闭就置0.如果我们想打开：PrimaryDisplay、SecondaryKeyboard、CustomTarget3、CustomTarget6、CustomTarget11上的灯光，关闭其他灯光目标上的灯光，那么就根据上面的每一位与灯光目标的对应关系来构造二进制数值，得到：0100001001001001，再转化成10进制为：16969，即得到位掩码。（按照位掩码的定义，16969其实不是位掩码，上面对应关系中0x1-0x8000才是位掩码，前面说过，我们“将错就错”，把16969说成位掩码）
    更通俗地讲，16969就相当于IP地址，0x1-0x8000这些值就相当于子网掩码。