Tôi có dòng mã nàyJava Bitwise hoạt động
int b1 = 0xffff & (content[12]<<8 | 0xff & content[11]);
Tôi có một bytearray (nội dung []) trong little endian và cần phải tạo một giá trị 2 byte. Mã này thực hiện công việc tốt nhưng trước khi thử nghiệm tôi đã viết nó như thế này
int b1 = 0xffff & (content[12]<<8 | content[11]);
và kết quả là không đúng. Câu hỏi của tôi là tại sao 0xff cần thiết trong kịch bản này?
Vì byte được hiểu là số nguyên đã ký, và điều này có nghĩa là, (byte) 0x80 nhận được (int) 0xffffff80. Điều này được gọi là tiện ích ký tên. – Ingo