Чому вісімковий і шістнадцятковий? Комп'ютери використовують двійкові та людські десяткові знаки


16

Чому ми використовуємо інші бази, які не є ні двійковими (для комп'ютерів), ні десятковими (для людей)?

Комп'ютери в кінцевому підсумку представляють їх у двійковій формі, і людина настійно вважає за краще десяткове представлення. Чому б не дотримуватися цих двох основ?


Я схильний вважати, що немає твердих причин використовувати шістнадцятковий або щось із великою кількістю гліфів для цифр. Навіть більше, я схильний вважати, що бінарний репп може витіснити інші позначення для загального випадку в майбутньому.
Михайло V

@MikhailV Шістнадцяткове подання є НАШИМ більш стислим, ніж двійкове подання. Я б сказав, що це досить вагомий привід використовувати більшу кількість гліфів, ніж, скажімо, 2.
Бен Джонс,

Відповіді:


19

Октальне (база-8) та шістнадцяткове (базове-16) числа є розумним компромісом між двокомпонентними (база-2) системними комп’ютерами та десятковою (базова-10) системою, якими користується більшість людей.

Комп'ютери непогані в декількох символах, тому база 2 (де у вас є лише 2 символи) підходить для них, тоді як довші рядки, цифри з більшою кількістю цифр - це менше проблеми. Люди дуже хороші з декількома символами, але не так добре в запам'ятовуванні довших рядків.

Восьмі і шістнадцяткові користуються перевагою людини в тому, що вони можуть працювати з безліччю символів, тоді як це все ще легко перетворюється вперед і назад між двійковими, оскільки кожен шістнадцятковий розряд являє собою 4 двійкові цифри ( ), а кожна восьмизначна цифра являє собою 3 ( 8 = 2 3 ). Я думаю, що шістнадцятковий перемагає октал, тому що його можна легко використовувати для представлення байтів і 16/32/64-бітних чисел.16=248=23


8
Як приклад, розглянемо шістнадцяткові значення RGB. Неважко запам’ятати, що білий - #FFFFFF. Важко запам’ятати, що білий - 16777215 у десятковій частині. Ви хочете видалити червоний компонент # EF439A? Ви отримуєте # 00439A, тобто ви просто змінюєте перші дві цифри на 0. У десятковій частині вам доведеться відняти 15663104. Удачі, пам’ятаючи про це.
jmite

3
Якщо бути точним, кольори в десяткових позначеннях використовували б потрійні, а білий - 255, 255, 255. Ми поєднуємо шістнадцяткові значення лише тому, що вони завжди є двозначними. Ми могли б зробити те ж саме з десятковою лінією, використовуючи 0, тоді білий буде 255255255 замість 16777215.
Spidey

@Spidey Рівно. Більше того, мій мозок може проаналізувати щось на кшталт (127 255 255) набагато простіше, і я навіть здогадуюсь, як буде виглядати колір, оскільки я бачу пропорцію кількості чорнила і не потрібно її обчислювати в шістнадцятковій гамі.
Михайло V

13

Ми використовуємо їх для зручності та стислості.

Hex та Oct - це справді видатні стислі уявлення про двійкові. Шестнадцятковий варіант добре підходить для стислих форм адрес пам'яті. Кожна цифра окта безпосередньо відображає на 3 двійкові біти, а кожна шістнадцяткова цифра на 4 двійкові біти. Це результат того, що бази (8 і 16) є потужностями 2 ( і 2 4 ). Наприклад, я можу записати двійковий 01101001 як шістнадцятковий 69 або якщо розширити його на провідному нулі як окт 151 .23240110100169151

Так, скажімо, вам потрібні 64-бітні адреси пам'яті. Ви можете або переглянути всі 64 двійкові біти, або зменшити їх до 16-ти шістнадцяткових цифр. Часто вам не потрібно порівнювати кілька адрес, щоб побачити, чи однакові вони чи сусідні. Ви б краще подивилися на 64 біти або 16 цифр?


5
Octal має перевагу в тому, що не додає жодних цифрових символів, і, можливо, це було більш практичним в часи 6-бітових символів (і загальних слів без потужності з двох слів, наприклад, 12-бітний PDP-8, 18-бітний PDP- 1 [регістри адрес для CDC 6x00], 36-бітний PDP-6, 60-бітні регістри операндів для CDC 6x00). Перехід до октетних символів / байтів та потужностей двох слів робить шістнадцяткову більш привабливою.
Пол А. Клейтон

"Ви б краще подивилися на 64 біти або 16 цифр?" Звичайно, я б дивився на згруповані шматочки. Але не в нотації "01", що некрасиво і болить мої очі. І я навіть не кажу, скільки шести болить мені очі.
Михайло V

@MikhailV: Що ви маєте на увазі під позначенням "01"? Ви кажете, що швидше подивитеся на біти, а не на позначення "01" - які позначення ви б тоді використовували. Якщо ви скажете, що шістнадцятко болить ваші очі, я не можу не думати, що ви могли би попрацювати трохи більше на десяткових, ніж на шестигранних. (Насправді я думав, що секс (сольний) говорили погано для очей, але це вже інша історія.)
PJTraill

Я вважаю за краще це в даний час більш популярний відповідь dtech, оскільки він підкреслює простоту використання, але ви могли б зазначити, що не тільки більш короткі зображення, але і більша різноманітність цифр полегшують дізнатися, де ви знаходитесь, читаючи число в шістнадцятковому або вісімковий.
PJTraill

@ PaulA.Clayton: хороші бали; Ще одна перевага PDP-11 полягала в тому, що, хоча слова (натуральна одиниця операцій) складали 16 біт, більшість інструкційних кодів природно потрапляли в 2-бітну операцію та чотири 3-бітні групи, що представляють номер реєстру та режим адреси, обидва з яких мали 8 можливостей, з двох аргументів. Моя улюблена: 014747 = MOV - (ПК), - (ПК), яка заповнює пам'ять собою (якщо це дозволено).
PJTraill

5

Двійкові числа в тексті - це марно витрачається місце.

252n1


2

Вступ

Як уже згадувалося в інших відповідях, можуть бути різні позначення для різних цілей і обмежень. Позначення насправді - це кодування як послідовність символів, і ми вивчаємо з вивчення алгоритмів та структури даних про те, що існує багато способів кодування абстрактних понять, списку чи набору, наприклад, залежно від того, що ми хочемо зробити з ним . У цьому випадку це переважно алгоритмічна зручність.

При розгляді подання чисел те саме стосується. Всередині комп'ютера все є двійковим на найнижчому рівні, хоча для деяких додатків можна використовувати незнайомі уявлення.

Поза комп'ютером ми використовуємо будь-яке зрозуміле для людини уявлення, залежно від зручності для людини щодо виду представленої цінності. Двійкове представлення часто є занадто довгим і неструктурованим, щоб легко читатись і писати, таким чином, це місце для шістнадцяткової або восьмеричної форми. Вибір, можливо, часто пов'язаний з тим, як структурується інформація у бінарне слово, яке не обов'язково має означати число.

Але, розглядаючи лише цифри , тобто представлення чисел, варто переглянути інші системи представлення чисел, щоб зрозуміти, що основними факторами є: фізіологія, звичка та зручність. Зручність є, звичайно, провідним фактором, що створює різноманітність, оскільки це залежить від контексту використання.

Ширший погляд

Дивно, що всі відповіді поки що вважають лише десятковими та базовими 2n

Подача цього питання ні в якому разі не обмежується комп’ютерами, а люди використовували та все ще використовують декілька інших систем числення. Деякі з них навіть використовуються в комп'ютерах, наприклад, при роботі з довгими цілими числами (не кажучи вже про не цілі числа ).

Перше зауваження полягає в тому, що коли люди вважаються тисячами або мільйонами як одиниця, це все ще вважається десятковим, тому що це сили 10. Тому можна задатися питанням, чому восьмигранні або шістнадцяткові не слід вважати лише варіацією на двійкові. Однією з можливих причин може бути кількість символів, які використовуються для представлення чисел (хоча це спірне питання, як ми побачимо з іншими системами).

Потім, стосовно людей, вони використовують декілька систем у базі 5, які називаються квинними системами . Насправді більшість із цих систем мають дві основи, друга - 2 або 4, чергуючись із базовою п'ятою, що робить їх еквівалентом базі 10 (десятковій) або базовій 20 (вігезимальній). Здогадайтесь, звідки це походить :)

Ці системи з подвійною базою називаються двохімічними або квадриквінарними системами. Чиста квірина використовується рідко.

Римська цифра може розглядатися як біхінарна система (що є вказівкою щодо того, як робити арифметику з ними). Китайський та японський абаки використовують біхінарію. Квадри-квірина використовували майї.

Причин використання системи, мабуть, багато. Однією з вагомих причин є те, що це було першим місцевим дизайном, і люди зараз звикли до нього. Наприклад, можна також поцікавитися, чому англійськомовні люди все ще використовують надзвичайно дивну систему числення, намагаючись виміряти відстані. Ви можете стверджувати, що це питання кількох одиниць, а не їх нумерація, але це дуже слабке зауваження. Числа використовуються в основному для вимірювання речей.

Інші причини збереження системи - це зручність у заданому контексті. Можливий компроміс між кількістю різних символів або позицій на абаку і кількістю появи символів, необхідних для формування досить великих чисел. База 2 працює з двома різними символами, але має безліч випадків, що може бути незручно для зображення матеріалу. Для великої величини 20 потрібні двадцять символів та дуже великі таблиці множення, які люди не пам’ятали б. Але бікінічна або квадрихінічна система набагато більш керована, особливо для побудови абакусу. Чиста система квіта може бути навіть кращою, але це суперечить звичкам та інтуїції, заснованим на фізіології. І завжди приємно вміти рахувати пальцями, коли ми не знаємо нічого кращого.

Але це ще не все.

Одна дуже стара і дуже поширена система - це статева система, яка використовується для вимірювання часу та кутів (але ми знаємо, що вони пов'язані через обертання Землі). Він використовує базу 60, але не використовує 60 символів, як це занадто багато. Таким чином, вона покладається на іншу систему для представлення своїх синолів (наприклад, десяткової системи).

Коло можна розділити на 6 частин, що відповідають кутам 60 градусів, які найпростіше побудувати за допомогою рівносторонніх трикутників. Потім кожен градус становить 60 хвилин дуги, кожна поділена на 60 секунд.

За вікіпедією

Він зародився з давніми шумерами в 3-му тисячолітті до нашої ери, він був переданий стародавнім вавилонянам, і досі він використовується - в модифікованій формі - для вимірювання часу, кутів та географічних координат.

Вважаючи походження це була досить зручна система, в той час, коли математика навряд чи вступала в немовлят. Не тільки кут 60⁰ легко намалювати, але і 60 має безліч факторів, так що він дозволяє багато в чому розділити цілі числа, без залишку.

12×5=60

Але є й інші шляхи до 60, як, наприклад, вегесамально-потрійна система вавилонян .

Чому ми все ще використовуємо статеву систему. Я думаю, ми просто звикли до цього, і у нас може бути занадто багато суперечливих питань, щоб зміни були повністю виправданими.

Цікаво відзначити, що між системами нумерації та одиничними системами існує багато взаємозв'язку. Але цього варто очікувати, оскільки міра є основною роллю для чисельності. Це помітно в протиставленні між десятковою і двійковою метрикою щодо розміру пам'яті .


3
Це може бути тому, що в заголовку написано "Чому шістнадцятковий, восьмеричний чи шістнадцятковий?"
Фіз

1
@RespawnedFluff Добре зауваження. Тоді моє опитування може поширитись на питання. Я не хотів сказати, що інші відповіді нецікаві. Але ширший погляд краще показує можливі мотивації для різних систем. Він підтримує деякі вже відповіді. В основному мотивація - це звичка і зручність. Але зручність дуже залежить від контексту. Дихотомія розміру пам'яті - нещодавно створена, і вона ілюструє суть.
babou

2
Стислість - це чеснота, це питання не потребує прози в 1000 слів, а також більшість із них не є дуже актуальним. Ви також не змогли відповісти на запитання.
dtech

"Коли люди нараховують тисячі, ..., це все ще вважається десятковим, тому що це сили 10. Тому можна задатися питанням, чому восьмеричний або шістнадцятковий не слід вважати лише варіацією на двійковій формі. Тому що тисячі - це лише опущення цифр, як правило, 0. Це відрізняється від базової-1000, яка використовувала б 1000 різних символів для кожного числа 0-999.
dtech

1
@dtech Дякую Я забув вступ або резюме, яке зазвичай маю перед своїми відповідями. І це призвело мене до важливого моменту, очевидно, ігнорованого іншими відповідями. Не кожне двійкове слово позначається як числівник. Намагання отримати ширший погляд - це те, що допомагає знайти проблеми.
бабу

-1

Комп'ютери розуміють двійкові числа, а в двійкових - ваги числа мають потужність 2, тому число цифр для представлення числа може бути великим залежно від числа.

Скажімо, 64 у десятковій частині можуть бути представлені 7 бітами, тоді як для представлення числа 5000 нам потрібно 13 біт.

Восьмі і шістнадцяткова система числення - це компактний спосіб представлення двійкового числа.


2
Як ця відповідь [What advantage is there to using a base different from ten or (a power of) two?]- чи як ще ви інтерпретуєте Why not stick to [bases 2 and 10]??
сіра борода
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.