Je veux être en mesure d'accéder au bit de signe d'un nombre en C++. Mon code actuel ressemble à ceci:Comment puis-je accéder au bit de signe d'un nombre en C++?
int sign bit = number >> 31;
Cela semble fonctionner, me donner 0
pour les nombres positifs et -1
pour les nombres négatifs. Cependant, je ne vois pas comment je me -1
pour les nombres négatifs: si 12 est
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 1100
puis -12 est
1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 0011
et décalant 31 bits feraient
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0001
ce qui est 1, pas -1, alors pourquoi ai-je -1 quand je le change?
double possible (http: // stackoverflow. com/questions/141525/absolute-beginners-guide-to-bit-shifting) – msw
int sign_bit = (int) (nombre> 0); – aviraldg
Pour [complément à deux] (http://en.wikipedia.org/wiki/Two%27s_complement#Complement_of_a_positive_number) (que les systèmes les plus modernes utilisent), votre -12 est faux. Il devrait se terminer à 0100. –