Uczęszczam na kurs college'u na temat systemów operacyjnych i uczymy się, jak konwertować z binarnego na szesnastkowy, dziesiętny na szesnastkowy itp., A dziś właśnie dowiedzieliśmy się, jak liczby podpisane / niepodpisane są przechowywane w pamięci za pomocą uzupełnienia do dwóch (~ liczba + 1).
Mamy kilka ćwiczeń do zrobienia na papierze i chciałbym móc zweryfikować moje odpowiedzi przed przesłaniem mojej pracy nauczycielowi. Napisałem program C ++ dla kilku pierwszych ćwiczeń, ale teraz utknąłem, jak mogę zweryfikować swoją odpowiedź z następującym problemem:
char a, b;
short c;
a = -58;
c = -315;
b = a >> 3;
i musimy pokazać binarną reprezentację w pamięci z a
, b
i c
.
Zrobiłem to na papierze i daje mi następujące wyniki (wszystkie reprezentacje binarne w pamięci liczb po uzupełnieniu do dwóch):
a = 00111010 (to znak, więc 1 bajt)
b = 00001000 (to znak, więc 1 bajt)
c = 11111110 11000101 (jest krótki, więc 2 bajty)
Czy istnieje sposób na zweryfikowanie mojej odpowiedzi? Czy istnieje standardowy sposób w C ++ do wyświetlania reprezentacji binarnej w pamięci liczby, czy też muszę kodować każdy krok osobno (obliczać uzupełnienie dwóch, a następnie konwertować na binarny)? Wiem, że ten ostatni nie potrwa tak długo, ale jestem ciekawy, czy istnieje standardowy sposób, aby to zrobić.
std::hex
) manipulatora - Zostawię to jako ćwiczenie dla ciebie, aby opracować resztę ...