我发现了一些有趣的事情"source\common\unicode\utf.h"
ICU 库文件(Unicode 国际组件)。位旋转旨在检查数字是否在特定范围内。
// Is a code point in a range of U+d800..U+dbff?
#define U_IS_LEAD(c) (((c)&0xfffffc00)==0xd800)
我已经弄清楚神奇的数字(0xfffffc00)来自:
MagicNumber = 0xffffffff - (HighBound - LowBound)
然而,我还发现该公式并不适用于每个任意范围。这里有人知道这个公式在什么情况下有效吗?
是否还有另一个位可以用来检查数字是否在特定范围内?
要应用这些技巧,数字的二进制表示形式必须具有一些共同特征。
0xD800 == 0b1101_1000_0000_0000
0xDBFF == 0b1101_1011_1111_1111
该测试的真正作用是屏蔽掉低十位。这通常写为
onlyHighBits = x & ~0x03FF
在此操作之后(“与非”),低十位onlyHighBits
保证为零。这意味着如果这个数字现在等于区间的下限,那么它之前就已经在区间的某个位置了。
此技巧适用于区间的下限和上限以相同的二进制数字开头的所有情况,并且在某些情况下下限只有 0,而上限只有 1。在您的示例中,它位于右侧第十个位置。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)