Natknąłem się na interesujący scenariusz, podczas pracy z operatorem przesunięcia bitowego. Jeśli drugi operand jest ujemny, jak działa operacja przesunięcia bitowego? .Operator przesunięcia bitowego z przesunięciem o numer ujemny
tj a < < b "< <" przesunięcia wzorca bitów w lewo przez B bitów w. Ale jeśli b jest neagtive, nie powinien być błąd w czasie wykonywania?
Z powodzeniem mogę uruchomić poniższy kod, ale nie rozumiem, jak to działa?
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);
}
Wejście
bitwiseleftShift('A');// ASCII 65
bitwiseleftShift('0'); // ASCII 48
Wyniki
bit wise shift of 1 with val=-32 is 1
bit wise shift of 1 with val=-49 is 32768
ASCII dla 'a' jest 97. Czy ktoś może mi pomóc zrozumieć, jak to działa?
Dzięki John! To odpowiada ... TAK mówi, że nie mogę zaakceptować odpowiedzi, dopóki nie minie jeszcze 6 minut ... :(Przy okazji, wielka fana! Cieszę się, że odpowiedziałeś! – prashantsunkari