Aby przedstawić dodatnią liczbę całkowitą, musimy zamienić binarne na dziesiętne. Robimy to poprzez pomnożenie i-tego bitu przez 2i. Tak więc najbardziej prawy bit jest mnożony przez 20, czyli 1, drugi najbardziej prawy przez 21, czyli 2, a trzeci najbardziej prawy przez 22, czyli 4, i tak dalej.

Więc 1010 binarnie jest: 1*23+ 0*22+1*21+0*20 = 8+0+2+0 = 10 dziesiętnie

Inny sposób, aby to ująć: zaczynając od najbardziej prawego bitu i idąc w lewo, przypisujemy 1,2,4,8,16,32, itd. do każdego bitu, który jest 1.
Możemy również wziąć liczbę binarną i przekonwertować ją na binarną. Jednym ze sposobów, aby to zrobić jest wypisanie wartości base-10 każdego bitu, aż znajdziesz taki, który jest większy niż liczba, którą próbujesz przekonwertować. Tak więc dla liczby 155 w systemie base-10, wypisalibyśmy wartości odpowiadające :
wartość: 256 128 64 32 16 8 4 2 1
Aby otrzymać 155, nie możemy mieć ustawionych 256 bitów, ale możemy mieć 128, więc wstawiamy tam '1′.
wartość: 256 128 64 32 16 8 4 2 1
0 1
Wciąż potrzebujemy 155-128=27. 64 i 32 są za duże, więc umieszczamy tam 0, a na 16 stawiamy 1:
value: 256 128 64 32 16 8 4 2 1
0 1 0 0 1
Potrzebujemy jeszcze 155-128-16=11. Dajemy więc '1′ do cyfry o wartości 8. Potrzebujemy jeszcze 3, więc wstawiamy 0 do 4-walutowej cyfry, a 1 do 2-walutowej i 1-walutowej. To daje nam liczbę binarną:
wartość: 256 128 64 32 16 8 4 2 1
0 1 0 0 0 1 0 1 1
Więc 155 dziesiętnie jest równe 010011011 binarnie.
Integry są zwykle przydzielane 4 bajty (32 bity) lub na 64-bitowych komputerach, często 8 bajtów.
Przedstawianie liczb zmiennoprzecinkowych
Liczby zmiennoprzecinkowe są reprezentowane podobnie do liczb całkowitych, ale niektóre bity są zarezerwowane dla części ułamkowej liczby. Z tego powodu liczbom zmiennoprzecinkowym przypisuje się więcej bitów (np. 64 zamiast 32).
Przykład: Powiedzmy, że mieliśmy zamiar reprezentować float za pomocą 6 bitów, z których 2 najbardziej prawe są częścią ułamkową. Jaką wartość miałaby wtedy:
101010?

Znaki i ciągi znaków

Każdy symbol na klawiaturze – litery, cyfry itd. – jest reprezentowany wewnętrznie w pamięci komputera za pomocą liczby. Nazywamy je znakami.
Mapowanie między liczbami i symbolami jest zdefiniowane w tabeli ASCII: http://www.lookuptables.com/.
Tablica odwzorowań była znana jako tablica ASCII, lub kod ASCII. W ASCII każdy symbol był reprezentowany przez liczbę z zakresu od 0 do 255 (pytanie: ile bitów jest potrzebnych do przechowywania takiej liczby?)
Aby nie być anglocentrycznym, nowoczesne systemy komputerowe używają teraz Unicode, który może reprezentować wiele różnych języków i wymaga dodatkowych bitów do reprezentowania każdego symbolu. Ale dla symboli angielskich, tabela ASCII może być nadal używana do wyszukiwania wartości każdego symbolu.

Słowo jest ciągiem znaków, np. Wewnętrznie przechowujemy numer unicode dla każdego znaku oraz specjalny znak końca ciągu. Tak więc słowo 'dog’ to tak naprawdę numer unicode dla 'd’, numer unicode dla 'o’ i znak unicode dla 'g’, a na końcu znak końca ciągu, którym jest '0′. 'd’ to 100 dziesiętnie w tabeli ASCII, więc „pies” jest reprezentowany przez następujące liczby dziesiętne (przechowywane w 16 bitach każda):
100 111 103 0
Liczby są zazwyczaj przechowywane jako liczby całkowite, jak wyjaśniono powyżej. Ale kiedy otrzymujemy dane wejściowe od użytkownika lub wyświetlamy wartości, musimy obsługiwać liczby reprezentowane jako ciąg cyfr. Tak jak w przypadku liter, cyfry są znakami. Cyfra „0” jest liczbą unicode 48, a „9” jest liczbą unicode 57. Ciąg '724′ jest przechowywany wewnętrznie jako: 55 50 52 0

Arkusz roboczy

1. Rozważmy następujące szesnaście bitów:

0000 0000 0100 1101

a. Jaka jest wartość tej liczby, jeśli jest ona dodatnią liczbą całkowitą?
b. Jeśli ciąg bitów reprezentuje jakiś symbol, to jaki to symbol? Możesz użyć tablicy ascii lookup http://www.lookuptables.com/

2. Komputery miały kiedyś 64K pamięci. Ile to jest K? Czy jest to liczba okrągła? Dlaczego informatycy nie pracują z okrągłymi liczbami, takimi jak 1000?
3. Co to jest megabajt? Gigabajt? Co to jest tysiąc gigabajtów? Milion gigabajtów?
4. Pokaż, jak poniższe trzy liczby w systemie base-10 byłyby reprezentowane w systemie binarnym.

24 1025 43

5. Pokaż, jak „kot” jest reprezentowany w bitach?
6. Ile możliwych znaków można reprezentować za pomocą kodu Unicode (16 bitów)?
7. Jaka jest największa liczba całkowita, którą można reprezentować za pomocą 4 bajtów, jeśli bierzemy pod uwagę tylko liczby dodatnie?
8. Jeśli weźmiemy pod uwagę także liczby ujemne, jaka jest największa liczba całkowita, którą można reprezentować za pomocą czterech bajtów? Jak myślisz, w jaki sposób reprezentowane są liczby ujemne?
9. Napisz funkcję Pythona, która przyjmuje ciąg cyfr jako parametr i zwraca liczbę całkowitą, która jest wartością bazową 10 tych cyfr, np. jeśli parametrem jest „723”, to funkcja zwraca liczbę całkowitą 723 (tak, wiem, Python ma funkcję int – piszesz ją tutaj).
10. Napisz funkcję Pythona, która przyjmuje jako parametr ciąg cyfr w systemie base-10 i zwraca ciąg cyfr w systemie base-2, tak aby cyfry w systemie base-2 były przekonwertowaną wartością oryginalnych cyfr w systemie base-10. Na przykład, jeśli „11” zostało wysłane, funkcja zwróciłaby „1011”.
Pracuj nad powyższymi pytaniami z ołówkiem i papierem. Kiedy skończysz, możesz sprawdzić swoje odpowiedzi dotyczące konwersji binarnej tutaj: http://mistupid.com/computers/binaryconv.htm
Pomoc w zakresie konwersji binarnej:

Liczby binarne z CSUNPLUGGED

Liczby binarne w 60 sekund

.

Leave a comment

Twój adres e-mail nie zostanie opublikowany.