Прямой код
Прямой код — способ представления двоичных чисел с фиксированной запятой в компьютерной арифметике. Главным образом используется для записи неотрицательных чисел. В случае использования прямого кода для чисел как положительных, так и отрицательных, то есть чисел, запись которых подразумевает возможность использования знака минус (знаковых чисел), хранимые цифровые разряды числа дополняются знаковым разрядом.
В англоязычной литературе именуется Sign and magnitude method.
Представление числа со знаком в прямом коде
При записи числа в прямом коде старший разряд (старший бит) объявляется знаковым разрядом (знаковым битом). Если знаковый бит равен 0, число положительное, иначе — отрицательное. В остальных разрядах (которые называются цифровыми разрядами) записывается двоичное представление модуля числа.
Функция кодирования двоичных чисел (в том числе целых чисел и смешанных дробей) в прямом коде имеет вид:
где — номер знакового разряда (знакового бита). В частности, при кодировании правильных двоичных дробей (то есть чисел, удовлетворяющих неравенству
),
и функция кодирования принимает вид:
Величина числа в прямом коде определяется по следующей формуле:
где:
— номер разряда числа; отрицательное число — номер разряда справа от запятой; положительное число — номер разряда слева от запятой;
— количество разрядов справа от запятой (кол-во разрядов дробной части числа);
— количество разрядов слева от запятой (кол-во разрядов целой части числа);
— цифра в
-ом разряде;
— основание системы счисления; равно 2 для двоичных чисел, 10 — для десятичных, 16 — для шестнадцатеричных и т. п.;
— значение знакового разряда (знакового бита);
— число, имеющее
разрядов справа от запятой (дробная часть) и
разрядов слева (целая часть); учитываются только цифровые разряды.
Как видно из последней формулы, знаковый разряд в прямом коде не имеет разрядного веса. При выполнении арифметических операций это приводит к необходимости отдельной обработки знакового разряда в прямом коде.
Примеры
| Десятичное число | Двоичное число | Код прямой двоичный 8-разрядный | Примечание |
|---|---|---|---|
| 0 | 0 | 0000 0000 | Положительный ноль |
| -0 | -0 | 1000 0000 | Отрицательный ноль |
| 5 | 101 | 0000 0101 | |
| 10 | 1010 | 0000 1010 | |
| -5 | -101 | 1000 0101 | |
| -16 | -10000 | 1001 0000 | |
| 9/16 | 0.1001 | 0.100 1000 | |
| -9/16 | -0.1001 | 1.100 1000 | |
| 105/128 | 0.1101001 | 0.110 1001 | |
| -5/128 | -0.0000101 | 1.000 0101 |
Применение прямого кода
В информатике прямой код используется главным образом для записи неотрицательных целых чисел. Его легко получить из представления целого числа в любой другой системе счисления. Для этого достаточно перевести число в двоичную систему счисления, а затем заполнить нулями свободные слева разряды разрядной сетки машины.
Однако при использовании для чисел со знаком у прямого кода есть два недостатка.
- В прямом коде есть два варианта записи числа (например, 00000000 и 10000000 в восьмиразрядном представлении). Второе представление называется «отрицательный ноль»
- Использование прямого кода для представления отрицательных чисел в памяти компьютера предполагает или выполнение арифметических операций центральным процессором в прямом коде, или перевод чисел в другое представление (например, в дополнительный код) перед выполнением операций и перевод результатов обратно в прямой код (что неэффективно).
Выполнение арифметических операций над числами в прямом коде затруднено: например, даже для сложения чисел с разными знаками требуется кроме сумматора иметь специальный блок-«вычитатель», сложность реализации которого такая же, как и обычного сумматора. Кроме того, при выполнении арифметических операций требуется особо обрабатывать знаковый разряд, так как он не имеет веса. Также требуется обработка «отрицательного ноля». Таким образом, выполнение арифметических операций над знаковыми числами в прямом коде потребует более сложной архитектуры центрального процессора и в общем является неэффективным.
Гораздо более удобным для выполнения арифметических операций является дополнительный код.
Диапазон
-разрядный прямой код (
цифровых разрядов и один знаковый) позволяет представлять целые числа в диапазоне
.
-разрядный прямой код (
цифровых разрядов и один знаковый) позволяет представлять правильные двоичные дроби в диапазоне
.
См. также
- Обратный код
- Дополнительный код
- Целочисленный тип данных
Примечания
Литература
- Behrooz Parhami. 2.1. Signed-Magnitude Representation // Computer Arithmetic: Algorithms and Hardware Designs. — New York: Oxford University Press, 2000. — P. 19—21. — 510 p. — ISBN 0-19-512583-5.
- Самофалов К.Г., Романкевич А.М., Валуйский В.Н., Каневский Ю.С., Пиневич М.М. Прикладная теория цифровых автоматов. — Киев: Вища школа, 1987. — 375 с.
Википедия, чтение, книга, библиотека, поиск, нажмите, истории, книги, статьи, wikipedia, учить, информация, история, скачать, скачать бесплатно, mp3, видео, mp4, 3gp, jpg, jpeg, gif, png, картинка, музыка, песня, фильм, игра, игры, мобильный, телефон, Android, iOS, apple, мобильный телефон, Samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Сеть, компьютер, Информация о Прямой код, Что такое Прямой код? Что означает Прямой код?
Pryamoj kod sposob predstavleniya dvoichnyh chisel s fiksirovannoj zapyatoj v kompyuternoj arifmetike Glavnym obrazom ispolzuetsya dlya zapisi neotricatelnyh chisel V sluchae ispolzovaniya pryamogo koda dlya chisel kak polozhitelnyh tak i otricatelnyh to est chisel zapis kotoryh podrazumevaet vozmozhnost ispolzovaniya znaka minus znakovyh chisel hranimye cifrovye razryady chisla dopolnyayutsya znakovym razryadom V angloyazychnoj literature imenuetsya Sign and magnitude method Predstavlenie chisla so znakom v pryamom kodePri zapisi chisla v pryamom kode starshij razryad starshij bit obyavlyaetsya znakovym razryadom znakovym bitom Esli znakovyj bit raven 0 chislo polozhitelnoe inache otricatelnoe V ostalnyh razryadah kotorye nazyvayutsya cifrovymi razryadami zapisyvaetsya dvoichnoe predstavlenie modulya chisla Funkciya kodirovaniya dvoichnyh chisel v tom chisle celyh chisel i smeshannyh drobej v pryamom kode imeet vid A PP A A 02n A A lt 0 displaystyle A Pi mathrm P begin cases A amp A geqslant 0 2 n A amp A lt 0 end cases gde n displaystyle n nomer znakovogo razryada znakovogo bita V chastnosti pri kodirovanii pravilnyh dvoichnyh drobej to est chisel udovletvoryayushih neravenstvu 1 lt A lt 1 displaystyle 1 lt A lt 1 n 0 displaystyle n 0 i funkciya kodirovaniya prinimaet vid A PP A A 01 A A lt 0 displaystyle A Pi mathrm P begin cases A amp A geqslant 0 1 A amp A lt 0 end cases Velichina chisla A displaystyle A v pryamom kode opredelyaetsya po sleduyushej formule A 1 2asign i knaipi displaystyle A 1 2a sign sum i k n a i p i gde i displaystyle i nomer razryada chisla otricatelnoe chislo nomer razryada sprava ot zapyatoj polozhitelnoe chislo nomer razryada sleva ot zapyatoj k displaystyle k kolichestvo razryadov sprava ot zapyatoj kol vo razryadov drobnoj chasti chisla n displaystyle n kolichestvo razryadov sleva ot zapyatoj kol vo razryadov celoj chasti chisla ai displaystyle a i cifra v i displaystyle i om razryade p displaystyle p osnovanie sistemy schisleniya ravno 2 dlya dvoichnyh chisel 10 dlya desyatichnyh 16 dlya shestnadcaterichnyh i t p asign displaystyle a sign znachenie znakovogo razryada znakovogo bita A displaystyle A chislo imeyushee k displaystyle k razryadov sprava ot zapyatoj drobnaya chast i n displaystyle n razryadov sleva celaya chast uchityvayutsya tolko cifrovye razryady Kak vidno iz poslednej formuly znakovyj razryad v pryamom kode ne imeet razryadnogo vesa Pri vypolnenii arifmeticheskih operacij eto privodit k neobhodimosti otdelnoj obrabotki znakovogo razryada v pryamom kode Primery Desyatichnoe chislo Dvoichnoe chislo Kod pryamoj dvoichnyj 8 razryadnyj Primechanie0 0 0000 0000 Polozhitelnyj nol 0 0 1000 0000 Otricatelnyj nol5 101 0000 010110 1010 0000 1010 5 101 1000 0101 16 10000 1001 00009 16 0 1001 0 100 1000 9 16 0 1001 1 100 1000105 128 0 1101001 0 110 1001 5 128 0 0000101 1 000 0101Primenenie pryamogo kodaV informatike pryamoj kod ispolzuetsya glavnym obrazom dlya zapisi neotricatelnyh celyh chisel Ego legko poluchit iz predstavleniya celogo chisla v lyuboj drugoj sisteme schisleniya Dlya etogo dostatochno perevesti chislo v dvoichnuyu sistemu schisleniya a zatem zapolnit nulyami svobodnye sleva razryady razryadnoj setki mashiny Odnako pri ispolzovanii dlya chisel so znakom u pryamogo koda est dva nedostatka V pryamom kode est dva varianta zapisi chisla 0 naprimer 00000000 i 10000000 v vosmirazryadnom predstavlenii Vtoroe predstavlenie nazyvaetsya otricatelnyj nol Ispolzovanie pryamogo koda dlya predstavleniya otricatelnyh chisel v pamyati kompyutera predpolagaet ili vypolnenie arifmeticheskih operacij centralnym processorom v pryamom kode ili perevod chisel v drugoe predstavlenie naprimer v dopolnitelnyj kod pered vypolneniem operacij i perevod rezultatov obratno v pryamoj kod chto neeffektivno Vypolnenie arifmeticheskih operacij nad chislami v pryamom kode zatrudneno naprimer dazhe dlya slozheniya chisel s raznymi znakami trebuetsya krome summatora imet specialnyj blok vychitatel slozhnost realizacii kotorogo takaya zhe kak i obychnogo summatora Krome togo pri vypolnenii arifmeticheskih operacij trebuetsya osobo obrabatyvat znakovyj razryad tak kak on ne imeet vesa Takzhe trebuetsya obrabotka otricatelnogo nolya Takim obrazom vypolnenie arifmeticheskih operacij nad znakovymi chislami v pryamom kode potrebuet bolee slozhnoj arhitektury centralnogo processora i v obshem yavlyaetsya neeffektivnym Gorazdo bolee udobnym dlya vypolneniya arifmeticheskih operacij yavlyaetsya dopolnitelnyj kod Diapazon n 1 displaystyle n 1 razryadnyj pryamoj kod n displaystyle n cifrovyh razryadov i odin znakovyj pozvolyaet predstavlyat celye chisla v diapazone 2n 1 2n 1 displaystyle 2 n 1 2 n 1 n 1 displaystyle n 1 razryadnyj pryamoj kod n displaystyle n cifrovyh razryadov i odin znakovyj pozvolyaet predstavlyat pravilnye dvoichnye drobi v diapazone 1 2 n 1 2 n displaystyle 1 2 n 1 2 n Sm takzheObratnyj kod Dopolnitelnyj kod Celochislennyj tip dannyhPrimechaniyaLiteraturaBehrooz Parhami 2 1 Signed Magnitude Representation Computer Arithmetic Algorithms and Hardware Designs New York Oxford University Press 2000 P 19 21 510 p ISBN 0 19 512583 5 Samofalov K G Romankevich A M Valujskij V N Kanevskij Yu S Pinevich M M Prikladnaya teoriya cifrovyh avtomatov Kiev Visha shkola 1987 375 s
