Сов­ремен­ные компь­юте­ры спо­соб­ны совер­шать мил­лионы мил­лиар­дов опе­раций за секун­ду. Сре­ди самых базовых опе­раций — матема­тичес­кие. Что­бы понять, как имен­но компь­ютер их выпол­няет, мы сегод­ня обсу­дим устрой­ство сум­матора и ариф­метико‑логичес­ких устрой­ств на его осно­ве.
 

Обработка чисел

Ос­новная работа любого мик­ропро­цес­сора — это обра­бот­ка чисел. А уже на ее осно­ве совер­шают­ся дру­гие, более слож­ные опе­рации.

Цифровая электроника с самого начала

В сво­их прош­лых стать­ях я рас­ска­зывал о дво­ичной сис­теме счис­ления, алгебре логики и логичес­ких вен­тилях, элек­трон­ных ком­понен­тах, мик­росхе­мах и мно­гом дру­гом инте­рес­ном и полез­ном. Рекомен­дую озна­комить­ся, осо­бен­но если в этой статье встре­тят­ся непонят­ные вещи.

В осно­ве работы компь­юте­ра лежит ариф­метико‑логичес­кое устрой­ство (АЛУ). Что­бы понять, как оно работа­ет, давай раз­берем прин­цип, который поз­воля­ет компь­юте­ру совер­шать опе­рации. Но сна­чала я под­робнее рас­ска­жу о самой дво­ичной сис­теме.

 

Двоичная система

Ду­маю, ты уже име­ешь некото­рое пред­став­ление о дво­ичном счис­лении. Все чис­ла в дво­ичной сис­теме сос­тоят из двух цифр — нуля и еди­ницы. Внут­ри компь­ютер исполь­зует ее для всех опе­раций, даже если работа­ет с десятич­ными или шес­тнад­цатерич­ными чис­лами.

 

Перевод чисел из двоичной системы в десятичную и обратно

Пе­рево­дить чис­ла из одной сис­темы в дру­гую про­ще все­го при помощи каль­кулято­ра, но для нас сей­час важ­но знать, как это дела­ется, по шагам.

Чис­ло в десятич­ной сис­теме счис­ления мож­но пред­ста­вить в виде сум­мы его цифр, пом­ножен­ных на десять в сте­пени раз­ряда чис­ла — от самого пра­вого, которо­му соот­ветс­тву­ет 10 в нулевой сте­пени, к самому левому, при том что сте­пень каж­дый раз воз­раста­ет на еди­ницу. Нап­ример:

389 = 3 10² + 8 10¹ + 9 · 10⁰ = 300 + 80 + 9

Точ­но так же мож­но рас­кла­дывать дво­ичные чис­ла, толь­ко каж­дый раз­ряд (самая пра­вая циф­ра счи­тает­ся самым млад­шим раз­рядом) умно­жает­ся не на сте­пень десяти, а на сте­пень двой­ки. В ито­ге мы получим чис­ло в десятич­ной сис­теме. В качес­тве при­мера переве­дем чис­ло 1101 из дво­ичной в десятич­ную:

1101 = 1 + 1 · + 0 · + 1 · 2⁰ = 8 + 4 + 0 + 1 = 13

Что­бы перевес­ти обратно, нуж­но исполь­зовать деление с остатком. Исходное чис­ло в десятич­ной сис­теме делим на два, оста­ток от деления (1 или 0) записы­ваем в пер­вый раз­ряд (самая пра­вая циф­ра). Получен­ное час­тное сно­ва делим на два и оста­ток записы­ваем уже в сле­дующий раз­ряд. Так дей­ству­ем, пока в резуль­тате деления не получит­ся ноль. При­мер ты можешь уви­деть на кар­тинке сни­зу.

Перевод числа из десятичной в двоичную систему счисления
Пе­ревод чис­ла из десятич­ной в дво­ичную сис­тему счис­ления
 

Сложение

За опе­рацию сло­жения в элек­трон­ных чипах отве­чает сум­матор. Как скла­дывать дво­ичные чис­ла? Мож­но сло­жить в стол­бик точ­но так же, как десятич­ные. Пос­коль­ку цифр все­го две, дер­жать в уме и перено­сить здесь мож­но толь­ко еди­ницу.

Все­го воз­можных вари­антов сло­жения цифр одно­го раз­ряда четыре:

  • 0 + 0 = 0
  • 0 + 1 = 1
  • 1 + 0 = 1
  • 1 + 1 = 10

В пос­леднем слу­чае еди­ница перехо­дит в сле­дующий раз­ряд, резуль­тат записы­вает­ся как «0 с перено­сом 1». Этот бит перене­сен­ной еди­ницы скла­дыва­ется с битом в сле­дующем раз­ряде.

Сложение двоичных чисел
Сло­жение дво­ичных чисел

Те­перь рас­смот­рим более слож­ный при­мер со скла­дыва­нием четырех­битных дво­ичных чисел. В этих слу­чаях все еди­ницы млад­шего зна­чаще­го раз­ряда дают в сум­ме бит нуля с перено­сом еди­ницы в сле­дующие раз­ряды. Напоми­наю, раз­ряды счи­тают­ся от мень­шего к боль­шему (спра­ва налево). В сле­дующем раз­ряде мы сно­ва получа­ем две еди­ницы от перено­са и еди­ницы в раз­ряде. Про­цесс пов­торя­ется до самого стар­шего зна­чаще­го бита.

Ана­логич­но и с дру­гими чис­лами в сред­нем при­мере. В пос­леднем при­мере вышед­ший из млад­шего раз­ряда бит перено­са дает еди­ницу и в сум­му, и в бит перено­са. Как видишь, это работа­ет точ­но так же, как с десятич­ными чис­лами, а может, даже и про­ще.

 

Вычитание

Ес­ли при сло­жении нам нуж­но перено­сить чис­ла, то при вычита­нии пот­ребу­ется занимать. Работа­ет это точ­но так же, как при десятич­ном вычита­нии в стол­бик.

Продолжение доступно только участникам

Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

Вариант 2. Открой один материал

Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.


  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    5 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии