Двійковий зсув
Двійковий зсув[1],також згадується як зсув-К[2] зсув -Н, надлишковий код — це цифрова схема кодування, де код з усіма нулями відповідає мінімальному негативному значенню, а код з усіма одиницями — максимальному позитивному значенню. Немає чіткого стандарту для двійкового зсуву, але найчастіше зміщення для n-бітового двійкового слова використовується як K = 2n−1. Це призводить до того, що значення «нуль» переходить в 1 у найбільш значущих бітах, і нуль — у всіх інших. В цілому, ця дія комфортна та зручна; все одно, що використовувати додатковий код (доповнення до 2), за винятком того, що найбільш значущий біт інвертується. Це також означає, що в операції логічного порівняння, людина отримує той же результат, що і з числовим порівнянням додаткового коду. Варто відзначити, що запис логічного порівняння аналогічна з числовим порівнянням додаткового коду, якщо тільки в порівнюваних числах однаковий знак. Від'ємні значення повинні бути не більше, ніж позитивні, інакше вони будуть інвертовані.
Такий зсув використовувався, наприклад, для запису експоненти числа з рухомою комою в комп'ютерах IBM System/360 і System/370. Старший біт одного байта містить знак мантиси; експонента прийняла форму семибітного числа зі зсувом на 64 (27-1)[3]. 8-розрядна експонента у двійковому форматі Microsoft[en] з рухомою комою, який використовується в різних мовах програмування в 1970-х і 1980-х років, була закодована за допомогою зсуву на 129.
Стандарт IEEE використовує різні розміри експоненти, а також позначення зсуву для формату кожної точності. Однак, замість того, щоб використовувати зсув 2n−1, він використовує зсув 2n−1− 1 (тобто зсув-15, зсув-127, зсув-1023, зсув-16383). Це означає, що інвертування ведучого (найбільшого) біта експоненти не перетворює показник ступеня для правильного запису додаткового коду.
Двійковий зсув часто використовується в цифровій обробці сигналів (ЦОС). У більшості аналого-цифрові (АЦП) і цифро-аналогових перетворювачів (ЦАП) однополярні мікросхеми. Це означає, що вони не можуть впоратися з біполярними сигналами[en] (сигнали як позитивні, так і негативні). Простим рішенням є зсув аналогових сигналів зі зміщенням постійного струму, що дорівнює половині перетвореного діапазону АЦП і ЦАП. Потім цифрові дані будуть отримані у двійковому форматі зсуву.[4]
Більшість стандартних чипів ЦП комп'ютера не можуть обробляти двійковий зсув безпосередньо. Чипи ЦП, як правило, можуть обробляти тільки знакові й беззнакові цілі числа, а також значення з рухомою комою. Значення двійкового зсуву можуть бути оброблені декількома способами за допомогою цих чипів ЦП. Дані можуть розглядатися просто як цілі числа без знака, що змушує програміста розібратися зі зсувом нуля в програмному забезпеченні, або можуть бути перетворені в цілочисельний формат (який ЦП може обробляти спочатку), просто віднімаючи зсув нуля. В результаті, загальний зсув для N-розрядного слова — 2(n-1), де потрібно просто інвертувати перший біт в додатковий код, без дії віднімання. Це іноді є корисним спрощенням в обладнанні, і також може бути зручним у програмному забезпеченні.
Порівняльна таблиця двійкового зсуву для біта, з додатковим кодом.[5]
Код двійкового зсуву , K = 8 | Десятковий код | Двійковий код |
---|---|---|
1111 | 7 | 0111 |
1110 | 6 | 0110 |
1101 | 5 | 0101 |
1100 | 4 | 0100 |
1011 | 3 | 0011 |
1010 | 2 | 0010 |
1001 | 1 | 0001 |
1000 | 0 | 0000 |
0111 | −1 | 1111 |
0110 | −2 | 1110 |
0101 | −3 | 1101 |
0100 | −4 | 1100 |
0011 | −5 | 1011 |
0010 | −6 | 1010 |
0001 | −7 | 1001 |
0000 | −8 | 1000 |
Двійковий зсув може бути перетворений в додатковий код — інвертуємо значущий біт. Наприклад, з 8-бітовим значенням застосовується операція XOR з 0×80 для того, щоб перетворити в додатковий код. У спеціалізованому обладнанні простіше зрозуміти його положення, але для цього слід застосовувати в перевернутому значенні.
- Додатковий код
- Двійкова система числення
- Цифрова обробка сигналів
- Представлення чисел зі знаком
- Число з рухомою комою
- ↑ Chang, Angela; Chen, Yen; Delmas, Patrice (2006-03-07). «2.5.2: Data Representation: Offset binary representation (Excess-K)». COMPSCI 210S1T 2006 (PDF). Department of Computer Science, The University of Auckland[ru], NZ. p. 18. Retrieved 2016-02-04.
- ↑ Chang, Angela; Chen, Yen; Delmas, Patrice (2006-03-07). «2.5.2: Data Representation: Offset binary representation (Excess-K)». COMPSCI 210S1T 2006 (PDF). Department of Computer Science, The University of Auckland, NZ. p. 18. Retrieved 2016-02-04.
- ↑ IBM System/360 Principles of Operation Form A22-6821. Various editions available on the WWW.
- ↑ Electrical and Computer Science Department, Southeastern Massachusetts University[en], North Dartmouth, MA, USA (1988). Chen, Chi-hau, ed. Signal Processing Handbook. New York, USA:Marcel Dekker, Inc.[en]/CRC Press. ISBN 0-8247-7956-8. Retrieved 2016-02-04.
- ↑ «Data Conversion Binary Code Formats» (PDF). Intersil Corporation[ru] (published 2000). May 1997. AN9657.1. Retrieved 2016-02-04.