Tôi đã quét một mã nguồn của bên thứ ba sử dụng FindBugs (chỉ cần phải thận trọng trước khi tích hợp vào nó mỏ), và tìm thấy các cảnh báo sau đây:Cảnh báo Findbugs: Chuyển số nguyên theo 32 - nghĩa là gì?
long a = b << 32 | c
Bug: Integer thay đổi bởi id 32 Pattern: ICAST_BAD_SHIFT_AMOUNT , loại: BSHIFT, danh mục: CORRECTNESS
Mã thực hiện thay đổi số nguyên số không đổi ngoài phạm vi 0..31. Hiệu quả của việc này là sử dụng 5 bit thấp hơn của giá trị số nguyên để quyết định mức độ thay đổi theo. Điều này có thể là không mong muốn và ít nhất là khó hiểu.
Có ai vui lòng giải thích chính xác ý nghĩa của điều trên không?
Cảm ơn! (Tôi là một người mới trong lập trình Java)
Vì vậy,' int >> 32 (0x100000) == int >> 0 (0x00000) '? –
Cú pháp giả ngẫu nhiên bạn sử dụng, nhưng có, đúng vậy. – UndefinedBehavior