Tôi đã xem một kịch bản thú vị, Khi làm việc với toán tử thay đổi bit. Nếu toán hạng thứ hai là số âm, thao tác dịch chuyển bitwise hoạt động như thế nào? .Toán tử thay đổi khôn ngoan với sự dịch chuyển theo số âm
có nghĩa là < < b, "< <" thay đổi mẫu bit sang trái bằng bit b trong a. Nhưng nếu b là neagtive, nó không phải là một lỗi trong thời gian chạy?
Tôi có thể chạy mã bên dưới thành công nhưng tôi không hiểu nó hoạt động như thế nào?
public static void bitwiseleftShift(char testChar)
{
int val=testChar-'a';
int result= 1<<val;
System.out.println("bit wise shift of 1 with val="+val+" is "+result);
}
Input
bitwiseleftShift('A');// ASCII 65
bitwiseleftShift('0'); // ASCII 48
Kết quả
bit wise shift of 1 with val=-32 is 1
bit wise shift of 1 with val=-49 is 32768
ASCII cho 'a' là 97. Ai đó có thể giúp tôi hiểu được cách làm việc này?
Cảm ơn John! Điều đó trả lời nó .. SO nói rằng tôi không thể chấp nhận câu trả lời cho đến khi thêm 6 phút ... :(Nhân tiện, fan hâm mộ lớn! – prashantsunkari