Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Coding Concepts

Лікавыя сістэмы: ўвядзенне ў Двайковыя, Шаснаццаткавыя і іншыя сістэмы вылічэння

by
Length:LongLanguages:

Belarusian (беларуская мова) translation by Alex Grigorovich (you can also view the original English article)

Вы калі-небудзь бачылі гэтыя ненармальныя двайковыя лікі і дзівіліся, што яны абазначаюць? Вы калі-небудзь бачылі лічбы ў перемешку з літарамі, і задаваліся пытаннем, што адбываецца? Усё гэта і многае іншае вы даведаецеся ў гэтым артыкуле. Шаснаццаткавыя лікі не павінны вас палохаць.

(Дзякуй ReBoot Wiki за малюнак.)


Ўвядзенне: Што такое сістэма лікаў?

Вы, напэўна, ужо ведаеце, што такое сістэма лікаў - ці калі-небудзь чулі пра двайковых або шаснаццатковых ліках? Прасцей кажучы, сістэма лікаў - гэта спосаб іх прадстаўлення. Мы прывыклі выкарыстоўваць сістэму вылічэння якая складаецца з 10 лічбаў, якая называецца дзесятковай. Іншыя падобныя сістэмы, ўключаюць у сябе base-16 (шаснаццатковую), base-8 (васьмярковую) і base-2 (двойкавую).

У гэтым артыкуле я растлумачу, у чым жа адрозненне паміж гэтымі сістэмамі, як з імі працаваць, і чаму веданне пра іх дапаможа вам.


Нашы дзеянні

Перш чым мы пачнем, паспрабуем трохі пазабаўляцца. Існуе шмат розных спосабаў прадстаўлення колеру, але адным з найбольш распаўсюджаных з'яўляецца каляровая мадэль RGB. Выкарыстанне гэтай мадэлі дае нам веды пра тое, што кожны колер складаецца з камбінацыі колераў: чырвонага, зялёнага і сіняга.

Магчыма, вам цікава, як колеру могуць ставяцца да лічбавым сістэмам. Карацей кажучы, на кампутары любы колер захоўваецца як пэўную колькасць камбінацый: чырвонага, зялёнага і сіняга. (Мы пагаворым больш падрабязна пра гэта пазней.) Паколькі гэта ўсяго толькі лік, яно можа быць прадстаўлена некалькімі спосабамі і з выкарыстаннем розных сістэм падліку.

Ваша задача - адгадаць, колькі чырвонага, зялёнага і сіняга ў колеры фонавага малюнка. Значэння для чырвонага, зялёнага і сіняга могуць вар'іраваць ад 0 да 255.

Выкарыстоўвайце розныя падказкі, якія дапамогуць вам. Калі вы яшчэ не разабраліся ў гэтым, не праблема! Вы можаце ўбачыць, як выглядае ваша здагадка, выкарыстоўваючы кнопку View Guess. Цяпер гэта можа здацца складаным, але, упэўнены, да канца артыкула ўсё будзе зразумела.


Паглядзім на дзесятковую сістэму

0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 ... Вы ўвесь час лічыце, выкарыстоўваю дзесятковую сістэму. Вырашыце хутка, колькі будзе 7 + 5? Калі вы адказалі 12, вы карыстаецеся дзесятковую сістэму. Давайце больш падрабязна разгледзім тое, што вы рабілі ўсе гэтыя гады, нават не задумваючыся пра гэта.

Зірнем на падлікі. Спачатку вы пералічвае ўсе лічбы: 0, 1, 2... Пасля таго, як вы дайшлі да 9, у вас больш няма лічбаў для прадстаўлення наступнага ліку. Такім чынам, вы змяняеце яго на 0 і дадаеце 1 да дзесяткаў, і атрымліваеце 10. Працэс паўтараецца зноў і зноў, і ў выніку вы дабіраецеся да 99, дзе вы не можаце атрымаць вялікі лік з двума лічбамі, таму вы дадайце яшчэ адзін разрад, і атрымліваеце 100.

Хоць гэта ўсё вельмі проста, вы не павінны выпускаць з-пад увагі тое, што адбываецца. Самая крайняя справа лічба ўяўляе сабой лік адзінак, наступная лічба ўяўляе сабой лік дзясяткаў, наступнае лік сотні і т. д.


Візуалізацыя дзесятковай сістэмы

Збітыя з панталыку гэтымі апісаннямі? Няма праблем - ніжэй прыведзены прыклад. Проста увядзіце лік у тэкставае поле і націсніце кнопку. Паспрабуйце ўвесці вялікі лік, напрыклад 2347. Вы ўбачыце дзве групы лікаў з тысяч, 3 групы сотняў, 4 групы дзясяткаў і 7 адзінак.


Дзесятковая сістэма рахунку з матэматычнага пункту гледжання

Магчыма, вы ўжо заўважылі, як працуе гэты шаблон. Давайце паглядзім, што адбываецца з матэматычнага пункту гледжання, выкарыстоўваючы прыклад 2347.

  • Як вы бачылі, ёсць дзве тысячы. Не выпадкова 1000 = 10*10*10, што таксама можна запісаць як 103.
  • Тут 3 сотні. Зноў жа, не выпадкова тое, што 100 = 10*10 ці 102.
  • Тут 4 дзясяткі, і 10 = 101.
  • Нарэшце, тут 7 адзінак - 1 і 1 = 100. (Гэта можа здацца дзіўным, але любы лік у ступені 0 роўна 1, па азначэнні.)

Гэта, па сутнасці, вызначэнне дзесятковай сістэмы. Каб атрымаць значэнне чысла ў дзесятковай сістэме, мы проста выкарыстоўваем гэты шаблон. Вось яшчэ некалькі прыкладаў:

  • 892 = 8*102+9*101+2*100
  • 1147 = 1*103+1*102+4*101+7*100
  • 53 = 5*101+3*100

Вядома, усё гэта здаецца трохі дурным. Мы ўсе ведаем, якое значэнне набывае лік у дзесятковай сістэме, таму што мы заўсёды яе выкарыстоўваем, і гэта натуральна. Як мы неўзабаве пабачым, калі мы зразумеем шаблоны, як працуе дзесятковая сістэма, мы зможам лепш зразумець і іншыя.


Васьмярковы сістэма вылічэння

Base - 8, таксама званая васьмярковы. Гэтая сістэма азначае менавіта тое, што мы чуем у яе назве: сістэма заснаваная на васьмі (а не на дзесяці) лічбах. Памятаеце, як у дзесятковай сістэме ў нас было дзесяць лічбаў? Цяпер, у васьмярковай, мы абмежаваныя толькі васьмю лічбамі: 0, 1, 2, 3, 4, 5, 6 і 7. Не існуе 8 і 9.

Мы лічым як звычайна, за выключэннем толькі таго, што цяпер у нас ёсць восем лічбаў. Замест падрабязнага апісання, націсніце «Count Up 1» унізе, і вы ўбачыце, як вядзецца падлік ў васьмярковай сістэме вылічэння.

Вы ўжо раней назіралі за падобным прыкладам; пасля таго як мы дабяромся да лічбы 7, у нас заканчваюцца лічбы для далейшага падліку. І нам патрэбны спосаб, які дапаможа прадставіць васьмёрку. Такім чынам, мы дадаем яшчэ адзін разрад, мяняем 7 на 0 і атрымліваем 10. Наш адказ 10 у васьмярковай сістэме будзе ўяўляе тое, што мы звычайна лічым 8 у дзесятковай.

Кажучы пра ліках, створаных з выкарыстаннем некалькіх сістэм падліку, можна збіцца з панталыку. Напрыклад, як мы толькі што бачылі, 10 у васьмярковай сістэме зусім не супадаюць з 10 у дзесятковай. Такім чынам, з гэтага моманту я буду выкарыстоўваць стандартнае пазначэнне, дзе індэкс, калі гэта будзе трэба, абазначае сістэму лікаў. Напрыклад, наша 10 у васьмярковай сістэме зараз выглядае як 108.

(Заўвага рэдактара: Значна лягчэй зразумець апісанае, калі змяніць спосаб чытання гэтых лікаў у галаве. Напрыклад, для 108 я разумею, што гэта васьмярковай "адзін-нуль" або "адзін-нуль у base8". А для 1010 у дзесяцярычнае сістэме "дзесятковы адзін-нуль " або "адзін-нуль у base10".)

Выдатна, дык вось мы ведаем, што 108 ўяўляюць восем лікаў. (Ніколі не забывайце дадаваць абазначэнне сістэмы вылічэння да лічбы.) Якое наступнае лік пасля 778? Калі вы сказалі 1008 вы правы. Мы ведаем гэта з таго, што нядаўна прачыталі, што першая сямёрка у 778 ўяўляе сабой разрад васьмёрак, а другая сямёрка ўяўляе адзінкі. Калі мы дадамо усё гэта, то ў нас атрымаецца 7*8 + 7*1 = 63. Такім чынам, мы маем у агульнай складанасці 6310. Такім чынам, 778 = 6310. Мы ўсе ведаем, што 6410 варта пасля 6310.


Пераўтварэнне з васьмярковай сістэмы ў дзесяцярычнае

Давайце паглядзім на больш стары прыклад. Джон прапануе вам 478 печенек, а Джэйн прапануе даць вам 4310 печенек. Чыё прапанову вы прымаеце? Калі вы хочаце сапраўды вызначыцца, прайдзіце ледзь наперад і стварыце графік для візуалізацыі 478 з дапамогай першага інструмента. Давайце высвятлім яго значэнне ў дзесятковай сістэме, каб вы маглі прыняць лепшае рашэнне!

Як мы бачым пры падліку, чатыры з 478 ўяўляюць лік гуртоў з восьмёрок. Гэта лагічна - мы знаходзімся ў васьмярковай сістэме. Такім чынам, у агульнай складанасці ў нас ёсць чатыры групы з восьмёрок і сямі груп з адзінак. Калі мы складзем ўсё гэта, мы атрымаем 4*8 + 7*1 = 3910. Такім чынам, 478 печенек - тое ж самае, што і 3910 печенек. Прапанова Джэйн цяпер здаецца лепшым!

Ўзор, які мы бачылі раней з выкарыстаннем дзесятковай сістэмы, таксама правільны. Давайце разгледзім 5238. Існуе пяць гуртоў з 82, дзве групы з 81 і тры групы з 80 (памятаеце, што 80 = 1). Калі мы складзем ўсё гэта, 5*82 + 2*81 + 3*80 = 5*64 + 2*8 + 3 = 339, то атрымаем 33910, што з'яўляецца нашым канчатковым адказам. Ўсё прадстаўлена на дыяграме ніжэй:

Converting 523 from base-8 to base-10

Вось яшчэ некалькі прыкладаў:

  • 1118 = 1*82+1*81+1*80 = 64+8+1 = 7310
  • 438 = 4*81+3*80 = 32+3 = 3510
  • 61238 = 6*83+1*82+2*81+3*80 = 3072+64+16+3 = 315510

Пераўтварэнне з дзесятковай у васьмярковай сістэму вылічэння

Пераўтварэнне лікаў з дзесятковай у васьмярковай сістэму вылічэння з'яўляецца складаным працэсам, аднак дастаткова зразумелым. Галоўнае, тое, што мы павінны апрацоўваць працэс зверху. Пачнем з прыкладу: 15010.

Спачатку мы знойдзем найбольшую ступень 8, якая менш нашага колькасці. У дадзеным выпадку гэта 82 або 64 (ад 83 гэта 512). Падлічым, колькі груп 64 можна ўзяць ад 150. Гэта 2, дык вось першая лічба ў нашым ліку ў васьмярковай сістэме роўная 2. На дадзены момант мы падлічылі 128 з 150, і ў нас засталося 22.

Найбольшая ступень 8, якая ў суме дасць менш 22, складае 81 (т.е. 8). Колькі 8 можна адняць з ліку 22? Дзве, і, такім чынам, наша другая лічба таксама роўная 2.

Нарэшце, мы застаемся з 6 і, відавочна, можам адняць 6 і гэта будзе наша апошняя лічба. Мы атрымалі 2268.

Фактычна, мы можам зрабіць гэты працэс больш ясным з дапамогай матэматычнага вылічэнні. Вось нашы крокі:

  1. 150/82 = 2 рэшт 22
  2. 22/81 = 2 рэшт 6
  3. 6/80 = 6

Наш канчатковы адказ - гэта ўсё нашы колькасці без астатку або 226. Неабходна памятаць, што трэба пачынаць з пошуку ступені самага вялікага разраду 8-ок, якая менш нашага колькасці.


Праца з выкарыстаннем любой сістэмы вылічэння

Важна мець магчымасць прымяняць правілы, якія мы даведаліся пра васьмярковай і дзесяцярычнае сістэмах вылічэння адзін да аднаго. Як у васьмярковай сістэме існуе восем лічбаў. а ў дзесяцярычнае дзесяць, у адпаведнасці з сістэмай злічэння. Такім чынам, у пятеричной сістэме вылічэння - пяць лічбаў (0-4), а ў семеричной - сем лічбаў (0-6) і т. д.

Зараз давайце паглядзім, як перавесці значэнне з дзесяцярычнае сістэмы ў любую іншую. Скажам, мы працуем у сістэме n, дзе n можа быць любым станоўчым цэлым лікам. У нас ёсць лічба d4d3d2d1d0, дзе d - лік у ступені. (У дадзеным выпадку індэкс не з'яўляецца сістэмай вылічэння, а служаць для аддзялення кожнай лічбы.) Наша значэнне ў дзесяцярычнае сістэме наступнае: d4*b4 + d3*b3 + d2*b2 + d1*b1 + d0*b0.

Вось прыклад: у нас ёсць лічба 32311 у базы чатырох сістэме. Звярніце ўвагу, што наша лік мае лічбы ад нуля да трох, паколькі base-4 змяшчае толькі чатыры лічбы. Нашае значэньне ў дзесяцярычнае сістэме будзе роўна 3*44 + 2*43 + 3*42 + 1*41 + 1*40 = 3*256 + 2*64 + 3*16 + 1*4 + 1*1 = 949 Мы можам выкарыстоўваць гэты шаблон, выкарыстоўваючы любую колькасць лічбаў у нашым ліку.


Base-16

Base-16 таксама называецца шаснаццатковай сістэмай злічэння. Яна звычайна выкарыстоўваецца ў праграмаванні і вельмі важная для нас. Давайце пачнем з падлік, выкарыстоўваючы шаснаццатковы сістэму, мы зможам пераканацца, што мы даведаліся пра іншых сістэмах злічэння.

Паколькі мы працуем з 16-ай сістэмай вылічэння, у нас ёсць 16 лічбаў. Такім чынам, у нас ёсць 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, ... і упс! У нас скончыліся лічбы, але нам яшчэ трэба яшчэ шэсць штук. Можа быць, мы маглі б выкарыстоўваць нешта накшталт цыклу дзясятак?

Па праўдзе кажучы, мы маглі б, але гэта было б складана. Замест гэтага мы проста выкарыстоўваем літары алфавіту, пачынаючы з A і да F. Вось табліца з усімі лічбамі СІ 16:

Base-16 digits

Акрамя дадатковых лічбаў, шаснаццатковы код падобны на любую іншую СІ. Напрыклад, давайце преобразуем 3D16 ў base-10. Вынікаючы нашым папярэднім правілах, мы маем: 3D16 = 3*161 + 13*160 = 48 + 13 = 61. Такім чынам, 3D16 роўна 6110. Звярніце ўвагу, што D у нас роўна 13.

Мы можам перавесці з СІ 10 у СІ 16, падобна таму, як мы гэта рабілі з СІ 8. Давайце перавядзем 69610 ў СІ 16. Спачатку мы знаходзім найбольшую ступень 16, якая менш 69610. Гэта 162 або 296. Затым:

  1. 696/162 = 2 рэшт 184
  2. 184/161 = 11 рэшт 8
  3. 8/161 = 8 рэшт 0

Мы павінны замяніць 11 сваім лічбавым значэннем B, і атрымаем 2B816.

Для практыкі выкарыстоўвайце розныя варыянты канвертавання адной сістэмы вылічэння ў іншую. Вы можаце выкарыстоўваць прыкладанне ніжэй, каб праверыць свае адказы:


Binary! (Base-2)

На знакамітую базу-2, таксама званую двайковай. У той час як усе ведаюць, што двайковы код складаецца з 0 і 1, важна зразумець, што ён не адрозніваецца матэматычна, чым любая іншая база. Ёсць старая жарт, якая гучыць так:

binary shirt

Ці можаце вы зразумець, што гэта значыць?

Паспрабуем некалькі пераўтварэнняў з базай-2. Спачатку мы преобразуем 1011002 ў base-10. Мы маем: 101100 = 1*25 + 1*23 + 1*22 = 32 + 8 + 4 = 4410.

Зараз давайце преобразуем 65 ў двайковы файл. 26 - найвышэйшая магутнасць 2 менш за 65, таму:

  1. 65/26 = 1 рэшт 1
  2. 1/25 = 0 рэшт 1
  3. 1/24 = 0 рэшт 1
  4. 1/23 = 0 рэшт 1
  5. 1/22 = 0 рэшт 1
  6. 1/21 = 0 рэшт 1
  7. 1/20 = 1 рэшт 0

І такім чынам мы атрымліваем наша двайковае лік, 1000001.

Разуменне двайковай сістэмы вельмі важна. Я прывёў табліцу ніжэй, каб пазначыць значэння лічбаў.

Powers of Two

Напрыклад, значэнне 10001 роўна 17, што з'яўляецца сумай значэнняў двух 1 лічбаў (16+1). Гэта нічым не адрозніваецца ад таго, што мы рабілі раней, яго проста прадстаўлялі лёгка чытаным спосабам.


Хітрасці і парады

Звычайна, калі вы конвертируете колькасці паміж двума СІ, якія не зьяўляюцца дзесяцярычнае, вы павінны зрабіць нешта накшталт гэтага:

  1. Пераўтварыць лік у дзесяцярычнае СІ
  2. Пераўтварыць вынік у жаданую СІ

Тым не менш, ёсць спосаб, які дазволіць вам хутка канвертаваць колькасці паміж двайковымі і шаснаццатковай СІ. Спачатку ўнізе вы можаце двайковае лік і падзеліце яго лічбы на чатыры групы. Такім чынам, скажам, у нас ёсць нумар 10111012. Падзеленыя у нас ёсць дзве групы 0101 1101. Звярніце ўвагу, што мы дадалі дадатковыя нулі на пярэднюю частку першай групы, каб зрабіць цотныя групы з 4. Зараз мы знаходзім значэнне для кожнай групы, як калі б яно было яго ўласнае асобнае лік, якое дае нам 5 і 13. Нарэшце, мы проста выкарыстоўваем адпаведныя шаснаццаткавыя лічбы, каб выпісаць нумар базавага 16, 5D16.

Мы таксама можам пайсці ў іншым накірунку, перавядучы кожную шаснаццатковай лічбу ў чатыры двайковых лічбаў. Паспрабуйце пераўтварыць B716 ў двайковы. Вы павінны атрымаць 101101112.

Гэты прыём працуе, таму што 16 - гэта ступень ліку 2. Гэта азначае, што мы можам выкарыстоўваць падобны прыём для васьмярковай СІ, якая  таксама будзе ступенню ліку 2:

Base-8 to Binary

Гэта азначае, што мы можам выкарыстоўваць падобны прыём для васьмярковай СІ, якая  таксама будзе ступенню ліку 2:


Выснову

Давайце вернемся назад і пяройдзем да гульні з угадвання колеру.

Ва Flash колеру захоўваюцца як чысла. Калі яны пераўтворацца ў шаснаццаткавыя, першыя дзве лічбы ўяўляюць сабой колькасць чырвонага, а наступныя два - зялёнага, а апошнія два - сіняга. Такім чынам, калі наш колер 17FF1816, мы можам лёгка сказаць, што наш чырвоны кампанент роўны 1716 або 2310. Наш зялёны кампанент - FF16 або 25510. Нарэшце, наш сіні кампанент - 1816 ці 2410. Калі нам дадзена дзесяцярычнае версія нашага колеру, 157263210, нам трэба пераўтварыць яго ў шаснаццатковы, перш чым мы зможам расказаць што-небудзь з ім зрабіць.

Паспрабуйце пагуляць зноў і паглядзіце, як вы можаце гэта палепшыць!

Разуменне розных сістэм падліку надзвычай карысная ў многіх галінах звязаных з кампутарам. Двайковыя і шаснаццаткавыя СІ вельмі распаўсюджаны, і я рэкамендую вам добра азнаёміцца ​​з імі. Дзякуй за чытанне. Спадзяюся, вы шмат чаму навучыліся ў гэтым уроку! Не саромейцеся выкарыстоўваць зыходны код любы з дэманстрацыйных версій. Акрамя таго, калі ў вас ёсць якія-небудзь пытанні, калі ласка, задавайце іх ніжэй.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.