В Java побитовая операция приводит к приведению типа к целому, а также к расширению знака.Например, ожидается следующее:
byte b = -1;
System.out.println(b >> 1);//-1
В Java символы кодируются в UTF-16, и каждый блок представлен 2 байтами.
char c = 0xFFFF; //I assume now the sign bit is 1.
System.out.println(c >> 1);//32767 ???? WHY
Я ожидал -1 вместо 32767. Почему знак не расширяется во время приведения типа до применения побитовой операции?Есть идеи?