Voglio poter accedere al bit di segno di un numero in C++. Il mio codice corrente simile a questa:Come posso accedere al bit di segno di un numero in C++?
int sign bit = number >> 31;
Questo sembra funzionare, dandomi 0
per i numeri positivi e -1
per i numeri negativi. Tuttavia, non vedo come ottenere -1
per i numeri negativi: se 12 è
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 1100
poi -12 è
1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 0011
e spostandolo 31 bit renderebbe
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0001
che è 1, non -1, quindi perché ottengo -1 quando lo sposto?
possibile duplicato (http: // StackOverflow. it/questions/141525/absolute-beginners-guide-to-bit-shifting) – msw
int sign_bit = (int) (numero> 0); – aviraldg
Per [complemento a due] (http://en.wikipedia.org/wiki/Two%27s_complement#Complement_of_a_positive_number) (che utilizzano i sistemi più moderni), il tuo -12 è sbagliato. Dovrebbe terminare 0100. –