W jaki sposób liczby całkowite są wewnętrznie reprezentowane na poziomie bitowym w Javie?
Próbuję zrozumieć, jak Java przechowuje wewnętrznie liczbę całkowitą. Wiem, że wszystkie podstawowe liczby java są podpisane (z wyjątkiem krótkich?). Oznacza to, że jeden bit jest mniejszy w bajcie dla liczby.
Moje pytanie brzmi, czy wszystkie liczby całkowite (dodatnie i ujemne) są przechowywane jako uzupełnienie dwójkowe lub czy są tylko liczby ujemne w uzupełnieniu dwóch?
Widzę, że specyfikacja mówix bit two's complement number
. Ale często się mylę.
Na przykład:
int x = 15; // Stored as binary as is? 00000000 00000000 00000000 00001111?
int y = -22; // Stored as two complemented value? 11111111 11111111 11111111 11101010
Edytować
Być jasnym,x = 15
In binary as is: `00000000 00000000 00000000 00001111'
Two's complement: `11111111 11111111 11111111 11110001`
Więc jeśli masz odpowiedźall
liczby są przechowywane jako uzupełnienie dwóch, a następnie:
int x = 15; // 11111111 11111111 11111111 11110001
int y = -22 // 11111111 11111111 11111111 11101010
Zamieszanie tutaj znowu jest znakiem, oba są liczbami ujemnymi. Być może źle to rozumiemy?
Edytować Nie jestem pewien, czy moje pytanie jest mylące. Musimy wyizolować pytanie:
Moje pytanie dokładnie: czy są przechowywane liczby dodatniebinary as is
podczas gdy liczby ujemne są przechowywane jakotwo's complement
?
Niektórzy twierdzą, że wszystkie są przechowywane w uzupełnieniu dwóch, a jedna odpowiedź mówi, że tylko liczby ujemne są przechowywane jako uzupełnienie dwóch.