Operación de bits~problema
En lenguaje C, las constantes enteras se pueden representar de tres formas: octal, decimal y hexadecimal.
Decimal es similar a una expresión regular, como a = 111; eso significa que el valor de a es 111;
Las constantes enteras octales se representan sumando 0 antes del número, es decir. es, a=0111, representa octal 111.
111 (8) = 1 * 8 1 * 8 1 = 73 (10)
Las constantes enteras hexadecimales se representan sumando 0x antes del número, como a=0x111, que representa hexadecimal 111.
111 (16) = 1 * 16 * 1 * 16 1 (10)
~a es una operación de negación, que es esencialmente una representación binaria y luego la niega poco a poco. (0 se convierte en 1, 1 se convierte en 0), pero esto es más problemático. Un método de cálculo simple es sumar 1 al valor decimal y luego cambiarlo a un número negativo.
Por ejemplo: 111 (8) = 73 (10), entonces el valor de ~a es -(73 1) = -74.