Нотация за двоични числа като 1000100B - 1

„Здрасти, Амиго!“

„Здравей, Билаабо!“

„Искам да ви разкажа малко за различните системи за номериране.“

„Вече сте чували, че хората използват десетичната система. Ето основните факти за тази система:

1)  За записване на числа се използват 10 цифри: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9.

2)  Числото 543 означава 5 стотици + 4 десетици + 3 единици.

„Това е еквивалентно на писане на 5*100 + 4*10 + 3*1, което може да се запише като 5*10 2 + 4*10 1 + 3*10 0 .

Имайте предвид, че хиляди, стотици, десетици и единици са степени на числото 10.

1) Едно е 10 на нулева степен.

2)  Десет е 10 на първа степен.

3) Сто е 10 на втора степен.

4)  Хиляда е 10 на трета степен и т.н.

"Да. Разбрах."

„Но сега си представете, че имаме само 8 цифри. Тогава имаме осмичната система. Ето нейните основни факти:“

1)  За записване на числа се използват 8 цифри: 0, 1, 2, 3, 4, 5, 6, 7.

2)  Числото 543 8 означава 5*8 2 +4*8 1 +3*8 0 . С други думи, това е 5*64 + 4*8 + 3*1 = 320+32+3 = 320+32+3=355 10

Написах 8 и 10 като индекси, за да покажа колко цифри се използват за представяне на числото.

„Мисля, че разбирам. Мисля, че мога да преобразувам число от осмичната система в десетична. Но вероятно не бих могъл да отида в другата посока.“

"Не е толкова трудно. Представете си, че трябва да използвате няколко камиона, за да преместите купчина пясък. Имате самосвали, обикновени камиони и много малки камиони. Но камионите не могат да тръгнат, ако не са пълни."

— Как бихте го направor?

„Първо зареждах самосвалите, тъй като те са най-големите. След това, когато видях, че няма достатъчно пясък, за да напълня камиона, преминавах към по-малките превозни средства. И след това към още по-малките.“

„Тук всъщност е много подобно. Нека се опитаме да преобразуваме числото 355 10 обратно в осмично.“

„Първо го разделяме на 64 (8 2 ) и получаваме 5 с остатък 35. Това означава, че първата цифра от нашето число е 5. След това разделяме остатъка на 8 (8 1 ) и получаваме 4 с остатък от 3. Така получаваме числото 543 8 ."

„Между другото, можете да се движите и в другата посока. В края на краищата, 543 8 == 5*64+4*8+3 == ((5)*8+4)*8+3. Нашите осмични „десетки " и "стотици" трябва да бъдат разделени на 8. Следователно, остатъкът от делението на 8 ще бъдат нашите осмични цифри."

„Първо, нека разделим 355 на 8. Получаваме 44 с остатък 3. Тоест 355=44*8+3. И 44 може да бъде представено като 5*8+4. Така 355= (5*8+ 4)*8+3; Ето нашите цифри: 5, 4, 3. Числото, което търсим, е 543 8. "

„Мисля, че разбирам, но ще трябва да се упражнявам малко, за да разбера всичко докрай.“

„Програмирането често включва използване на числа с различни основи (т.е. броя на цифрите, използвани в системата за номериране). Най-популярните са 2, 8, 10, 16 и 64.“

„Но защо е необходимо това? Защо се нуждаем от числа, представени от 2, 8, 16 or 64 цифри?“

„Става въпрос за това How процесорът работи вътрешно. Много опростено, ако ток тече през проводник, тогава казваме, че неговата стойност е 1; ако няма ток, тогава стойността му е 0. Всички числа се съхраняват в клетки на паметта. Тези клетките имат много елементарен дизайн и могат да съхраняват само 0 or 1."

„Но такова опростяване (само 0 or 1) направи възможно елементите вътре в процесора и паметта да бъдат много малки. Съвременните процесори и модули памет включват мorарди различни елементи. И тяхната площ често е не повече от квадратен сантиметър.“

"Уау. Сега знам."

„Сега се обръщаме към двоичните числа. Тук имаме същото нещо като при осмичните, само че е по-лесно.“

1)  За записване на числа се използват 2 цифри: 0, 1.

2)  Числото 101 2 означава 1*2 2 + 0*2 1 + 1*2 0 . С други думи, това е 1*4+0*2+1*1 =4+1=51 10

„Да. Спомням си. Една клетка, която може да има стойност 0 or 1, се нарича бит. Но тя не може да съхранява много информация, така че те се комбинират в групи от 8. Тези групи се наричат ​​byteове. "

„Точно така. Един byte е група от осем бита. Той може да съхранява следните стойности: 00000000, 00000001, ... 11111111. Тези стойности съответстват на десетичните числа 0,1, ... 255. Което ни дава общо 256 стойности."

Кое е най-голямото цяло число в Java? Или по-скоро Howъв е неговият тип?

„A long. A long се състои от 8 byteа. С други думи, 64 бита. Може да съхранява стойности от -2 63 до 2 63 -1.

„Да. Няма да засягам How да преобразувам числа от десетични в двоични or обратно. В противен случай урокът ще бъде твърде дълъг.“

— Вместо това нека поговорим още малко за шестнадесетичната система.

„Да, много е интересно. За двоичните и осмичните системи просто се отървахме от цифрите, започвайки съответно с две и осем. Но Howво правим тук? Добавяме нови цифри?“

"Точно! Вижте това:"

1) За записване на числа се използват 16 цифри: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F.

2) Числото 543 16 означава 5*16 2 + 4*16 1 + 3*16 0 . С други думи, това е 5*256+4*16+3*1 = 1280+64+3 = 1347 10

„Значи просто добавихме букви като цифри? O_o“

"Да. И Howва е голямата работа? Защо да измисляме нови числа, когато буквите работят перфектно? Вижте го:"

Шестнадесетична цифра Десетична стойност
0 0
1 1
8 8
9 9
А 10
б 11
° С 12
д 13
д 14
Е 15

„Също така няма да говоря за преобразуване от десетична в шестнадесетична. Но ето един интересен факт. Една шестнадесетична цифра е представена от точно 4 бита със стойности от 0 до 15. Така че един byte може да бъде записан с осем двоични цифри (0 or 1) or две шестнадесетични цифри."

"Ето един пример:"

Десетично число Двоично число Шестнадесетично число
0 0000 0000 00
1 0000 0001 01
15 0000 1111 0f
16 0001 0000 10
31 0001 1111 1f
32 0010 0000 20
128 1000 0000 80
129 1000 0001 81
255 1111 1111 ff

„Шестнадесетичното представяне лесно се преобразува в двоично (и обратно). Ето защо вътрешното byteово представяне на число рядко се дава в двоично (използвайки 0 и 1) в програмирането. Това би било твърде дълго и трудно за разбиране. Шестнадесетичен запис е много по-четим и компактен."

"Съгласен съм. Дори на мен ми хареса."

„Между другото, Java ви позволява да пишете числа в различни системи за номериране директно в codeа:“

База Отличителна черта Примери Невалидни числа
2 0b  в началото на числото 0b 00001111 0b 11111 2 1
8 0  в началото на числото 0 1234343 0 12 8
10 Нито един 95459 909 а
16 0x  в началото на числото 0x 10ff 0x 1c gh

„Страхотен урок. Благодаря ти, Билаабо.“