Chcę móc uzyskać dostęp do bitu znaku liczby w C++. Mój obecny kod wygląda mniej więcej tak:Jak mogę uzyskać dostęp do bitu znaku liczby w C++?
int sign bit = number >> 31;
, który wydaje się działać, dając mi 0
dla liczb dodatnich i ujemnych -1
numerów. Jednak nie widzę w jaki sposób uzyskać -1
dla liczb ujemnych: jeśli 12 jest
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 1100
następnie -12 jest
1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 0011
i przesuwanie ich 31 bitów pozwoliłoby
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0001
co oznacza 1, a nie -1, dlaczego więc otrzymam -1, kiedy go zmieniam?
możliwy duplikat (http: // stackoverflow. com/questions/141525/absolute-beginners-guide-to-bit-shifting) – msw
int sign_bit = (int) (liczba> 0); – aviraldg
Dla [uzupełnienia dwójki] (http://en.wikipedia.org/wiki/Two%27s_complement#Complement_of_a_positive_number) (którego używają najbardziej nowoczesne systemy), twoje -12 jest złe. Powinno to kończyć się 0100. –