Двійковий зсув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.,також згадується як зсув-К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. зсув -Н, надлишковий код — це цифрова схема кодування, де код з усіма нулями відповідає мінімальному негативному значенню, а код з усіма одиницями — максимальному позитивному значенню. Немає чіткого стандарту для двійкового зсуву, але найчастіше зміщення для n-бітового двійкового слова використовується як K = 2n−1. Це призводить до того, що значення «нуль» переходить в 1 у найбільш значущих бітах, і нуль — у всіх інших. В цілому, ця дія комфортна та зручна; все одно, що використовувати додатковий код (доповнення до 2), за винятком того, що найбільш значущий біт інвертується. Це також означає, що в операції логічного порівняння, людина отримує той же результат, що і з числовим порівнянням додаткового коду. Варто відзначити, що запис логічного порівняння аналогічна з числовим порівнянням додаткового коду, якщо тільки в порівнюваних числах однаковий знак. Від'ємні значення повинні бути не більше, ніж позитивні, інакше вони будуть інвертовані.

Такий зсув використовувався, наприклад, для запису експоненти числа з рухомою комою в комп'ютерах IBM System/360 і System/370. Старший біт одного байта містить знак мантиси; експонента прийняла форму семибітного числа зі зсувом на 64 (27-1) IBM System/360 Principles of Operation Form A22-6821. Various editions available on the WWW.. 8-розрядна експонента у з рухомою комою, який використовується в різних мовах програмування в 1970-х і 1980-х років, була закодована за допомогою зсуву на 129.

Стандарт IEEE використовує різні розміри експоненти, а також позначення зсуву для формату кожної точності. Однак, замість того, щоб використовувати зсув 2n−1, він використовує зсув 2n−1− 1 (тобто зсув-15, зсув-127, зсув-1023, зсув-16383). Це означає, що інвертування ведучого (найбільшого) біта експоненти не перетворює показник ступеня для правильного запису додаткового коду.

Двійковий зсув часто використовується в цифровій обробці сигналів (ЦОС). У більшості аналого-цифрові (АЦП) і цифро-аналогових перетворювачів (ЦАП) однополярні мікросхеми. Це означає, що вони не можуть впоратися з (сигнали як позитивні, так і негативні). Простим рішенням є зсув аналогових сигналів зі зміщенням постійного струму, що дорівнює половині перетвореного діапазону АЦП і ЦАП. Потім цифрові дані будуть отримані у двійковому форматі зсуву.Electrical and Computer Science Department, , North Dartmouth, MA, USA (1988). Chen, Chi-hau, ed. Signal Processing Handbook. New York, USA:/CRC Press. ISBN 0-8247-7956-8. Retrieved 2016-02-04.

Більшість стандартних чипів ЦП комп'ютера не можуть обробляти двійковий зсув безпосередньо. Чипи ЦП, як правило, можуть обробляти тільки знакові й беззнакові цілі числа, а також значення з рухомою комою. Значення двійкового зсуву можуть бути оброблені декількома способами за допомогою цих чипів ЦП. Дані можуть розглядатися просто як цілі числа без знака, що змушує програміста розібратися зі зсувом нуля в програмному забезпеченні, або можуть бути перетворені в цілочисельний формат (який ЦП може обробляти спочатку), просто віднімаючи зсув нуля. В результаті, загальний зсув для N-розрядного слова — 2(n-1), де потрібно просто інвертувати перший біт в додатковий код, без дії віднімання. Це іноді є корисним спрощенням в обладнанні, і також може бути зручним у програмному забезпеченні.

Порівняльна таблиця двійкового зсуву для біта, з додатковим кодом. «Data Conversion Binary Code Formats» (PDF). (published 2000). May 1997. AN9657.1. Retrieved 2016-02-04.

Код двійкового зсуву , 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 для того, щоб перетворити в додатковий код. У спеціалізованому обладнанні простіше зрозуміти його положення, але для цього слід застосовувати в перевернутому значенні.

Див. також Додатковий код Двійкова система числення Цифрова обробка сигналів Представлення чисел зі знаком Число з рухомою комою

Примітки