Tôi muốn có thể truy cập bit dấu của một số trong C++. mã hiện tại của tôi trông giống như sau:Làm cách nào để truy cập vào bit dấu của một số trong C++?
int sign bit = number >> 31;
đó dường như làm việc, đem lại cho tôi 0
cho các số dương và -1
cho số âm. Tuy nhiên, tôi không thấy làm thế nào tôi có được -1
cho số âm: nếu 12 là
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 1100
sau đó -12 là
1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 0011
và chuyển nó 31 bit sẽ làm cho
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0001
đó là 1, không phải -1, vậy tại sao tôi lại nhận được -1 khi tôi thay đổi nó?
thể trùng lặp của (http: // stackoverflow. com/questions/141525/absolute-beginners-to-bit-shifting) – msw
int sign_bit = (int) (số> 0); – aviraldg
Đối với [hai phần bổ sung] (http://en.wikipedia.org/wiki/Two%27s_complement#Complement_of_a_positive_number) (mà hầu hết các hệ thống hiện đại sử dụng), thì -12 của bạn là sai. Nó sẽ kết thúc 0100. –