xem xét ảnh chụp sau mã javaHành vi của sự thay đổi unsigned đúng áp dụng cho byte biến
byte b=(byte) 0xf1;
byte c=(byte)(b>>4);
byte d=(byte) (b>>>4);
đầu ra:
c=0xff
d=0xff
đầu ra mong đợi:
c=0x0f
như thế nào? dưới dạng b trong số nhị phân 1111 0001
sau khi dịch chuyển phải không được ký 0000 1111
do đó 0x0f
nhưng tại sao lại là 0xff
như thế nào?
Có lẽ byte là dấu hiệu đầu tiên được mở rộng thành int – CodesInChaos