Навіщо вчитися шістнадцятковим? [зачинено]


28

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

У розділі введення до програмного забезпечення, який я знайшов, вони завжди роблять великий акцент на тому, щоб бути грамотними у двійковій, шістнадцятковій, а іноді навіть восьмеричній системах числення. Я розумію, що добре розуміти, що це за речі, і як комп'ютер інтерпретуватиме їх, але я ніколи не знаю, що мені потрібно знати, як читати і писати будь-яку з цих систем числення. Дійсно, єдиний раз, коли я бачив щось, окрім основи 10, - це кольори в CSS, що ще простіше, якщо ви використовуєте щось на зразок www.colorpicker.com

Чи я просто не знав про чудове використання цих систем без базових 10 номерів у світі програмування, чи це лише давня традиція включати ці розділи у всі підручники з програмування? Хтось має хороший приклад того, де середній програміст насправді використовував восьмеричне число?


1
Хтось має хороший приклад того, де середній програміст насправді використовував восьмеричне число? Так, якщо ви коли-небудь опинитесь, що пишете програмне забезпечення, пов'язане з авіаційною галуззю, то, швидше за все, ви зіткнетеся з кодами транспондерів, які є 4-значним восьмеричним номером. en.wikipedia.org/wiki/Transponder_%28aviation%29
Бен Коттрелл

Відповіді:


14

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

Якщо ви хочете зберегти рядок малих букв, упакованих досить добре, як би це зробити?

Що ж, є 26 малих букв, які легко переводяться в діапазон 0-31, що є 5-розрядним числом, ви можете спакувати 6 5-бітних чисел у 32-бітове поле (int?) І навіть у них залишилося достатньо для кількох розділових знаків.

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

Інший випадок, коли ви так часто використовуєте base-64 для передачі декількох довгих чисел в ascii. Чи знаєте ви, як це здійснити? Навіщо це реалізувати саме так? Ви навіть усвідомлювали, що це те, що ви вводили кожного разу, коли ви вводили "KEY CD" у реєстраційне поле гри?

Крім того, для розваги десь пограйте з базою 12. Математика виявляється дуже цікавою у базі 12 (база 10 дурна порівняно; я б хотів, щоб ми розвивались на 6 пальців - ми могли б бути на десятиліття вперед у нашому розумінні математики). Деякі дуже розумні ранні люди використовували базу 12 для розробки годинника.

У базі 10 у нас є 3 "Класні" номери, які створюють легкі шаблони, 2, 5 і 9 з 8, 6 і 4 як "Малі" круті числа. У базі 12 у вас 2,3,4,6,11 як "Класні" числа з 8,9 і 10 як "Незначні" круті числа, тобто, якщо ми використовували базу 12, нам було б набагато краще розпізнавати візерунки в числах тому що ми б їх бачили весь час.

Також двійкові. Ви можете порахувати з однієї руки до 32 - я це роблю зовсім небагато, корисно іноді, коли підрахунок до 5 просто не скорочує :)

Бінарне - це дуже весело, але це просто не добре. Коли ви попрацюєте з шестигранною, ви починаєте бачити "A" як 1010 та "5" як 0101, і ці речі починають по-справжньому мати значення. Якщо у вас є бітове поле, з якого ви бажаєте витягти 6-й біт: 00100000, з чим це ви «і»? Ви просто повинні знати, що це 0x20.

Якщо ви бачите код, який-небудь із 0x0600, які біти витягуються? Вам слід знати, навіть не замислюючись про це - ви насправді повинні читати це так, ніби це було написано 0000011000000000 (але простіше для читання, оскільки вам не потрібно рахувати нулі).

Чому ви хочете обмежити свій мозок та його здатність обробляти дані?


Власне, годинники були розроблені в базі60 .
Денис де Бернарді

@ Деніс У мене було враження, що нинішня теорія полягає в тому, що їх розробили люди, які нарахували в дванадцятьох базах, які втратили тупість людей, які не могли подумати, що пройшли пальцями. 60 - це лише 12 підрозділів, які далі поділяються на групи по 5 і, здається, після нападу на базу 10 балаканин :)
Білл К

Може бути. Якщо чесно, я аж ніяк не фахівець. Ваш коментар просто повернув давно забуту пам’ять. Я також пам'ятаю, що кути, виміряні в 360 градусах, походять від основи-60 (і тих самих винахідників-вавілонів у цьому), але, як ви зазначаєте, це може бути, що база-10 бурчання просто переповнювала те, що спочатку було базовим-12 математиків. :-) А тепер уявіть, якби ми рахували в базі-20, як це робили деякі американські індіанці. :-D
Дені де Бернарді

44

Що навчитися? Вам потрібно зрозуміти різні бази чисел, щоб бути грамотним програмістом, але щодо шестигранної можна навчитися мало, крім того, що ABCDEF прийде після 9.


8
ОП може посилатися на можливість розумового перенесення на базу 10 з інших баз. Це, можливо, було корисним навиком в один момент, і все ще може бути для певної категорії низькорівневих програмістів, але сьогодні значною мірою не має значення. Наприклад, ви можете зробити перетворення у vim тривіально.
Рейн Генріхс

Це правильно. Я повинен був бути більш чітким.
jwegner

2
@Rein Я ніколи не дуже добре робив це (я повинен робити математику в голові), тому не можу сказати. Однак я подумки міг перекладати з шістнадцяткової мови на мову збирання Z80, що було корисною справою, яку можна було зробити в той час. Я підозрюю, що можливість перенесення з шестигранної на 80x86 асемблер (або що завгодно) все ще корисна для програмістів, які працюють сьогодні.
Ніл Баттерворт

1
@Neil Butterworth: 8080 опкодів мають більше сенсу розглядатись у восьмеричному, справді, якщо пам'ять служить. Моя пам'ять справді туманна, як це стосується розширень Z80 до неї.
Девід Торнлі

1
@Neil: Я думаю, що значну частину склали інструкції з переходу на реєстрацію до реєстрації, які, як видається, є 01xxxyyy у бітовому форматі, де xxx є адресатом та yyy джерелом. Я не знаю, чи є якесь інше восьмеричне значення.
Девід Торнлі

18

Хтось має хороший приклад того, де середній програміст насправді використовував восьмеричне число?

Октал? Як правило, ні, за винятком дозволів * nix.

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

Приклад: регістри конфігурації на мікроконтролерах тощо.

Візьміть число 54312, взяте випадковим натисканням клавіш. Чи можете ви сказати, які біти встановлені? Я не можу, принаймні, не зверху голови. Шістнадцятковий еквівалент тоді, це 0xd428. Цез іншого боку, мені одразу каже, що бітовий малюнок, на який я дивлюсь, - це 1101 0100 0010 1000. Він більш логічно структурований для подібних речей, і ти вважаєш, що це потрібно постійно, коли ти близький до метал. Скажімо, вищевказане число - це те, що я отримую при перезавантаженні з mcu, і мені потрібні біти 7 і 9, встановлені з якоїсь причини. У шістнадцятковій формі я легко бачу, що отримане число повинно бути 0xd6a8, але в десятковій? Це 54952, ніде не так інтуїтивно, якщо ви запитаєте мене. Звичайно, справа в тому, щоб додати 640 до вартості, але це більше болю. Звичайно, на практиці можна просто перемістити біти в правильну позицію, АБО - з оригінальним значенням, але ви все одно можете дізнатися, що таке остаточне зображення.


1
Який тип спонукає до запитання "чому я повинен дбати, які біти встановлені?" Для деяких (багатьох? Більшості?) Додатків це не стосується.
Ніл Баттерворт

10
Погоджено - якщо припустити, що ми говоримо про високий рівень розвитку. Низький рівень, чи є конкретний біт встановлений або скинутий , не тільки може, але буде іноді визначити , є чи криваві мікро чоботи на всіх, або якщо якась - то периферійна вам потрібно живиться, або якщо він працює на тактовій частоті х , а не у . Це лише початок цього, і якщо ви маєте справу з таким розвитком, в основному, одинарні біти мають значення. Іноді багато. Але знову ж таки, це залежить від вашого домену, я просто кажу; Не забувайте про вбудований світ. =)
n42

1
+1 - чим ближче до машини, тим більше потрібно використовувати різні бази. Це не просто вбудовано; Більшість мов мають бітні прапори, і вони часто пишуться шістнадцяткою з очевидних причин. І навпаки, в першому курсі програмування викладати досить безглуздо, але потім більшість перших курсів програмування досить безглузді. Майже всі програмісти навчають себе правильно?

1
@Davor: Це тому, що шістнадцять легше читати. Я можу зрозуміти 8-значне шістнадцяткове значення набагато швидше, ніж 32-розрядне двійкове значення.
Steve S

2
@Steve S: Чесно кажучи, я підозрюю, що це тому, що ми також ледачий набір .. 0x80 коротше писати, ніж 0b10000000. Але я згоден Я також погоджуюся, що в першому курсі програмування це практично безглуздо, але ви можете занести це в дискретні математики, програмування в режимі реального часу, організацію комп'ютерів тощо.
n42

12

Хтось має хороший приклад того, де середній програміст насправді використовував восьмеричне число?

Якщо ви встановлюєте дозволи на файл у Unix (або Linux), ви використовуєте 3-значний восьмеричний номер. Перша цифра - це дозволи користувача, друга - дозволи групи, а остання цифра - дозволи, які отримують усі інші.

Мені довелося зрозуміти цей факт у коді, який я написав минулого тижня.

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

Якщо ви хочете зрозуміти, як плаваюча точка представлена ​​внутрішньо, і тому 1/10 не представлена ​​точно, вам абсолютно потрібно зрозуміти, як робити арифметику на різних базах. Це езотеричне знання до того дня, коли воно кусає вас в тил і раптом вам насправді потрібно зрозуміти це поспіхом.

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


4
* дозволу nix не є істинними восьмеричними. Ви не виконуєте математичних обчислень із цими поданнями. У кращому випадку це вісімкові зображення бінарної маски.
Joel Etherton

@Joel Etherton: Коли ви отримуєте дозволи з статистики файлу, вони вводяться у вигляді цифр, які за замовчуванням відображатимуться в базі 10. Якщо ви не розумієте перетворення в / з восьмеричного, ці цифри важко зрозуміти. Я писав документацію, необхідну для пояснення цього факту. Математичних розрахунків було багато.
btilly

@btilly: Ви неправильно розумієте, що я говорю. Якщо ви встановите дозволи на файл 755, вам нічого не доведеться додавати. Це просто маска, яка описує комбінації дозволів. Звичайно, ви повинні визнати, що це означає (4 + 2 + 1) (4 + 0 + 1) (4 + 0 + 1), але це все ще лише зображення бінарної маски. На що ви звертаєтесь, говорячи "файл stat"? Я ніколи не бачив статтю файлів для дозволів, доставлених у базі 10 (строго дотримуючись цього прикладу).
Джоел Етертон

1
@Joel Etherton: Спробуйте, perl -le '@stat = stat(shift); print $stat[2]' some_fileі ви отримаєте статтю як число в базі 10. Вам потрібно передати його в Perl chmodтак само. Тому має сенс зберігати число таким чином у базі даних, і в цей момент мені потрібно документувати, що ці цифри мають робити з більш звичними дозволами Unix. Як я вже говорив, це був не гіпотетичний приклад.
btilly

@Joel Etherton: скажімо, у вас є файл, дозволу якого 419 (десятковий), ви хочете зробити файл виконуваним користувачем, але не читати у всьому світі. Як потрібно змінити номер? Значення, що повертається у виклику C stat (), є цілим, а те, як ви вирішили надрукувати, - це інша справа.
Ватін

9

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

Я згоден, ви повинні розуміти, що відбувається, але навіщо запам'ятовувати, коли ви можете це шукати?

Однак мені здається корисним запам'ятати ключові цифри (для мене 0x64 = 100, 0xFF = 255, 0xFFFF = 65535 тощо), тому що їх дуже багато.

Чи можу я відірватися від того, що 8675309 є у двійковій, шестигранній та восьмеричній? Ні, але я можу відкрити інструмент, який можу, коли мені потрібно.


3
Ви забули 57005, що зазвичай використовується як constelvis = 57005;
Беван

5

Єдине, для чого я коли-небудь користувався octal - це дозволи на використання файлів у Unix.

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

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

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

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


5

Ви насправді запитуєте, навіщо вивчати силу представлення двох чисел?

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

Двійкові цифри утворюють візерунки . Наприклад, якщо єдиним способом, з яким ви і я можемо поговорити, є вихід з ланцюга, ми можемо встановити, що якщо ви хочете надіслати мені лист А, ви надішлете мені двійковий шаблон: 1000001. Оскільки я лінивий , Я не хочу запам’ятовувати 7 семизначних цифр. Швидше, я буду використовувати систему нумерації потужністю 2 для представлення великих двійкових цифр на меншу. Я можу використовувати 8 (2 ^ 3) або 16 (2 ^ 4).

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

Тепер приклад середнього програміста, який повинен зрозуміти потужність двох представлень:

  1. ASCII
  2. Unicode
  3. Розуміння програмування управління пам'яттю (стек, купа, адреси пам'яті, основні демпфи)
  4. Налагодження
  5. Читання двійкових даних здійснюється в основному в редакторі Hex.

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


3

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


3

Я не знаю, чи є велика потреба в ці дні, але багато років тому, коли я був системним програмістом, вміння читати і розуміти шістнадцятковий був важливим. Мені було б представлено дамп для зберігання даних (все в шістнадцятковій формі) і розшифрувати шестнадцяткове представлення на мову збірки IBM Зробивши це деякий час, ви в кінцевому підсумку зможете це зробити безпосередньо - прочитайте шістнадцятковий і напишіть збірний еквівалент. Дуже зручно для налагодження. Додавання та віднімання шістнадцяткових значень було корисним для обчислення зрушень із базових регістрів.

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


Тут я і набув своїх шестигранних навичок. Пізніше, загострений, коли мене змусили налагодити код без символічної налагодження на VAX / VMS (ми доставляли код клієнтам без будь-якої інформації про символ). Сьогодні я його рідко використовую, хоча ми кодуємо певну інформацію в певних URL-адресах у шістнадцятковій формі, і раз у той час корисно мати можливість їх розшифровувати під час руху.
TomG

3

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

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

Я також наголошу на важливості розуміння бази-2 в контексті того, як різні числові типи представлені всередині, і як працює арифметика. З цим ви зможете краще зрозуміти, коли і як вирішувати проблеми округлення плаваючої точки та переповнення цілого числа, наприклад.

Як ще один приклад, бітові операції та бітові прапори досі переважають у програмуванні, і це ще одне місце, де важливе розуміння бази-2.


2

Дійсно, єдиний раз, коли я бачив щось, окрім основи 10, - це кольори в CSS,

Вам ніколи не доводилося шукати символу в кодових діаграмах Unicode ? Ніколи не бачив URL-адреси, яка була %20в ній? Ніколи не використовували GUID ? Ніколи не бачив IPv6 адресу ? Ніколи не писав BLOBлітералу в SQL? Ніколи не переглядали файл у шестигранному редакторі? Існує багато матеріалів, пов'язаних з комп'ютером, які умовно відзначаються у шістнадцятковій формі.

Що стосується восьмеричного, то це сьогодні рідко, але все ще використовується для дозволів файлової системи Unix.

Дивіться також: практичне застосування побітових операцій

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

intАбстракція в більшості мов просочується його равношірінний характер. Цілі літери переповнюються, і вони роблять це при "круглих" двійкових числах, як 2 31 . Десятник, який мислив лише десяткові, не зміг би пояснити помилку 2038 року .

float/ doubleАбстракція просочується його десяткову 2. Якщо ви пишете 0.1, ви дійсно отримаєте 0.1000000000000000055511151231257827021181583404541015625. І ви отримаєте помилок, якщо очікували точного 0,1.


2

Розпізнавання конкретних чисел, шаблони яких в інших базах прості, часто є величезною підказкою при вирішенні помилок. Якщо ваша відповідь не відповідає 347, це, можливо, нічого не означає, але якщо вимкнено на 256 або 128, можливо, це щось означає. Якщо ви введете -1 у 16-бітний тип даних без підпису, ви отримаєте 65535, що на 1 менше, ніж 65536. Якщо вам трапляється знати 2 ^ 16, ви негайно помічаєте свою проблему.

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


1

Існує кілька високоефективних методів стиснення математики та даних, які ви можете використовувати, коли ви розумієте ці системи та як вони працюють. Напевно, ви не будете користуватися ними на своїх перших кількох роботах. Але мати їх у задній кишені, коли ви станете старшими, і вас попросять зробити перевантажену спадщину системою, що працює на недостатньо напруженому сервері динозаврів, приємно мати.
Це стає більш важливим, коли ви маєте справу з контролерами та електронікою, які не мають api. Особливо, якщо ви пишете цю апі.


1

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


1

Восьмі номери час від часу корисні при роботі із графіками. Останні базуються на байті, і один вісімковий = 8 біт = один байт. Наприклад, в UTF-8 символи, що не належать до ASCII, можуть мати два або більше байти; восьмеричні числа їх зручніше представляти, ніж шістнадцяткові числа.

Шматочки корисні, тому що ... ей! Ви знаєте, що ваш комп'ютер постійно має справу з 0 і 1, правда? Я маю на увазі серйозно ... Справа не лише в тому, що можна пожартувати, що комп'ютерні вчені є єдиними, хто знає, що 1 + 1 = 10. Це також корисно для операторів, пов’язаних з бітами, або як варбітів. Останні дозволяють зменшити вимоги до зберігання в базах даних при роботі з серіями прапорів.

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


Я думаю, ви маєте на увазі "октет", а не "восьмільник". Одна вісімкова цифра - це три біти. Застосування восьмеричних констант для символів, що не належать до ASCII, є переходом з перших днів С, розробленим на PDP-11, який використовував восьмеричне подання у більшості документації (див. Цю довідкову картку PDP-11 ).
TMN

Можливо я. Англійська мова не є моєю рідною мовою. :-)
Дені де Бернарді

1

Я закінчую університет 3 роки тому, і вважаю, що дуже важливо вміти читати та писати шістнадцяткові номери. Я псуюся з великою кількістю великих XML-файлів для роботи (велике значення 100MB +). Іноді ви отримаєте файл XML, який скаржиться на недійсний символ XML, який не відображається в жодному текстовому редакторі, тому мені довелося використовувати Hex-редактор і писати код, щоб визначити недійсні символи. Це завдання було б дуже важким, не знаючи шістнадцяткового номера.


1

Багато років тому я дізнався значення шістнадцяткових під час роботи над 8-бітовими системами.

Чіткість розуміння того, що щось розташоване у B000 або E7FF, було дивовижною.

Вчора мені потрібно було точно знати, які символи були в кінці рядка тексту. Знання різниці між 0x0A і 0x0A 0x0D може бути дуже важливим.


1

Хтось має хороший приклад того, де середній програміст насправді використовував восьмеричне число?

Октал в ці дні є досить рідкісним явищем, але я дуже часто використовую hex і часто думаю про проблеми в двійковій формі.

Я програмую в основному на C і C ++, з деяким Objective C, і дуже багато працюю з растровою та векторною графікою на Linux і Mac OS X. На цих аренах перш за все важливо писати код, який працює ефективно і добре використовує сховище. Ви також повинні зрозуміти, як машини внутрішньо представляють те, з чим ви працюєте. Найзручніший спосіб поглянути на це в шістнадцятковій. Наприклад, стандартний 24-бітний кольоровий піксель представлений у трьох байтах, і, з першого погляду, знаючи, що 0x000000 - чорний, 0x00FF00 - червоний, а 0x008000 - рожевий, це справді, дуже корисно!

Я також дуже багато працюю з міжнародними стандартами форматів файлів. Один, з яким я нещодавно працював, - це MXF, який використовується для зберігання відео для трансляції, DVD-дисків і т.д. Коли ви налагоджуєте, чому деякі відео на основі MXF не відтворюються правильно у вашій системі, це дуже зручно, щоб можна було подивитися на якесь 32-бітове поле і зрозуміти, що біт для очищення екрана ненавмисно встановлений - і ви можете це зробити це в шістнадцятковому періоді, але це майже неможливо в базі 10.

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


0

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

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


0

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

Це було дуже важливо ще тоді, коли все програмування було на низькому рівні. У програмуванні на високому рівні, що сьогодні, системи з чисельністю потужності 2 набагато менш важливі. Ретельне ознайомлення з ними в кожному курсі програмування може бути пережитком старих часів.

Але ці системи чисел все ще мають своє використання, навіть коли ви працюєте на мовах високого рівня. Наприклад, колір зберігається в 24 бітах, 8 біт на основний колір. А оскільки шістнадцятковий - найкращий спосіб представити байт у читаному для людини способі, це навіть частина CSS, яка повинна бути використана людьми, які ніколи не мали ознайомлення з програмуванням.

Ви не можете зрозуміти комп'ютери, не розуміючи бінарне. Вступ до бінарного є необхідною частиною кожного ретельного вступу до програмування. Можливо, вам не потрібно робити багато перетворень між системами числення у щоденній роботі, але робити такі вправи - це єдиний спосіб по-справжньому ознайомитися з цими системами числення *. Знання декількох систем, що не мають базових 10 чисел, - єдиний спосіб правильно зрозуміти, що дані можуть бути представлені багатьма способами, всі вони дійсні.

  • Як сказав Джон фон Нойман: "[..] ми не розуміємо речі, ми звикаємо до них".

0

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

Я думаю, що два (пов'язані) питання важливі для висвітлення в курсі основ.

  1. Про кодування. Йдеться не про математичне перетворення, а про використання чисел (будь-якого типу чисел) для зберігання інформації (будь-якого типу інформації). Ви можете проілюструвати це кодом Морзе або малювати цифрами також, якщо хочете. Але оскільки комп'ютери, скоріше, використовують двійкове і двійкове, як правило, відображається як шістнадцятковий, речі, як правило, проілюстровані шестигранними прикладами. (І, поки вони в цьому, вони можуть трохи пояснити закінчення рядків, про які згадувалося в цій темі. Я б лише порадив розпізнати різні форми та форми, які це може сприймати. Деякі з них - 0x0D, 0x0A , CRLF, '\ n' та '\ r')

  2. Проблеми переповнення. Ще раз, немає необхідності ілюструвати це шістнадцятково. Ви можете використати приклад y2k (який не мав нічого спільного з шістнадцятковим) Тут також я б просто порадив розпізнати різні найбільш вірогідні показники (255, 32767, 65535, 2M14) Чому вони є індикаторами, безпосередньо пов'язаними з побічною природою внутрішнього зберігання, але конверсія не є важливою частиною.

Я не погоджуюся з тим, що вам потрібно знати це для бітфлагів (адже у вступному курсі програмування названі константи набагато більш інструктивні та корисні.)


0

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.