Hola,
Esoy probando el operador de bits complemento a uno (negación). Pero en la salida no obtengo los resultados esperados. Y eso me ocurre con los tres IDES con que probé el mismo código (Code::Blocks, Dev-C++, VC++ 6).
Código:
#include <stdio.h>
#include <stdlib.h>
int main()
{
printf("Complemento a uno de 0: %d", ~0 ); /* Resustado obtenido: -1 */
putchar('\n');
printf("Complemento a uno de 1: %d", ~1 ); /* Resustado obtenido: -2 */
putchar('\n');
printf("Complemento a uno de 2: %d", ~2 ); /* Resustado obtenido: -3 */
putchar('\n');
printf("Complemento a uno de 152: %d", ~152 ); /* Resustado obtenido: -153 */
putchar('\n');
system("PAUSE");
return 0;
}
En teoría:
La primer salida me debería dar: 1 , porque 0 en binario es 0 y su complemento es 1
La segunda: 0 porque 1 en binario es 1 y su complemento es 0
La tercera: 1 porque 2 en binario es 10 y su complemento es 01
La cuarta, me debería dar 103
Probé de todo, incluso agregándole el valor absoluto -por las dudas- así:
...
#include <math.h>
...
printf("Complemento a uno de 152: %d", abs(~152)); /* Resustado obtenido: 153 */
...
Saludos.