Quiero poder acceder al bit de signo de un número en C++. Mi código actual es como la siguiente:¿Cómo puedo acceder al bit de signo de un número en C++?
int sign bit = number >> 31;
Eso parece funcionar, y me da 0
para los números positivos y -1
para los números negativos. Sin embargo, no veo cómo consigo -1
para los números negativos: si 12 es
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 1100
entonces -12 es
1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 0011
y desplazándola 31 bits harían
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0001
que es 1, no -1, entonces ¿por qué obtengo -1 cuando lo cambio?
posible duplicado de (http: // stackoverflow. com/questions/141525/absolute-beginners-guide-to-bit-shifting) – msw
int sign_bit = (int) (number> 0); – aviraldg
Para [complemento de dos] (http://en.wikipedia.org/wiki/Two%27s_complement#Complement_of_a_positive_number) (que usan la mayoría de los sistemas modernos), su -12 es incorrecto. Debería terminar 0100. –