Encontré un poco interesante jugando en el archivo "source\common\unicode\utf.h"
de la biblioteca de ICU (Componentes internacionales para Unicode). El bit twiddling estaba destinado a verificar si un número se encuentra en un rango particular.Bit twiddling para comprobar si un número está en el rango particular
// Is a code point in a range of U+d800..U+dbff?
#define U_IS_LEAD(c) (((c)&0xfffffc00)==0xd800)
he descubierto el número mágico (0xfffffc00) provienen de:
MagicNumber = 0xffffffff - (HighBound - LowBound)
Sin embargo, también me encontré con que la fórmula no se aplica a cada rango arbitrario. ¿Alguien sabe aquí en qué circunstancias funciona la fórmula?
¿Hay algún otro truco para comprobar si un número está en un rango determinado?
¿Puede proporcionar alguna referencia para "usualmente escrito como"?Personalmente encuentro 'a & ~ b' en lugar de' a & ~ b' menos intuitivo y 'a & b == c' más intuitivo que' a & ~ d == e' porque hay menos operaciones, incluso si es solo mi preferencia personal –
Tenga en cuenta que 'a & b == c' no significa lo que probablemente crea que significa (significa' a & (b == c) '). 'a & ~ b' es léxicamente idéntica a' a & ~ b', y estoy de acuerdo en que la última es una mejor transcripción de la misma, aunque solo sea porque así se hace habitualmente. –