30/09/2018, 20:35

Dịch bit trong Java

Cao thử nào có thể giúp mình giải thích tại sao trong Java (các ngôn ngữ khác không biết có như vậy ko???) em dùng phép dịch bit >> thì số -1 vẫn luôn là số -1 không ạ. Bất chấp dịch mấy bit cũng vậy???
Em xin cảm on…!

Mai Anh Dũng viết 22:49 ngày 30/09/2018

@Trung_Thao gửi code lên xem thử

*grab popcorn* viết 22:49 ngày 30/09/2018

-1 = 11111111
mà >> là signed shift right operator
Thì khi toán tử này sẽ kiểm tra bit dấu. Nếu bit dấu là 1, thì khi shift tự thêm 1
như -1 >> 5 đáng lẽ là 00000111
Nhưng nó lấy bit dấu nó bổ sung nên là 11111111
Muốn hết thì dùng >>> (unsigned right shift operator)

Và các ngôn ngữ khác cũng v.
Bổ sung: Các ngôn ngữ khác thg sẽ ko có unsigned right shift. Nhưng ít nh người ta sẽ hỗ trợ kiểu dữ liệu unsigned. Khi đó ép kiểu sang hoặc dùng unsigned là hết

Bài liên quan
0