Як 0 має два значення у доповненні?


12

Кажуть, що в доповненнях 2 0 має лише одне значення, тоді як у доповненні 1 і +0, і -0 мають окремі значення. Хто вони?


8
0 не має двох значень. Він має значення 0. Період. Що ж є в 1 в додатку два подання . Але це насправді не щось унікальне. Наприклад, число 10 має нескінченно багато представлень у десятковій формі: 10, +10, 010, +010, 0010, +0010,… тощо.
Йорг W Міттаг

Саме так. Ці значення є тільки класами еквівалентності уявлень, і то , що називається «значенням 0» трапляються клас еквівалентності , що містить як 000...0і 111...1. Але ці два уявлення все ще складають лише одне значення.
близько

Відповіді:


19

У додатку 1 ви просто перевернете всі біти.

Розглянемо ці 2 приклади (припускаючи 8 біт):

  • - 4 = 111110114=00000100 , тому4=11111011

  • - 0 = 111111110=00000000 , так .0=11111111

Отже, у вас є 2 способи представити число 0

У додатку 2 ви додаєте 1 до 1-го представлення додатка від'ємного числа

  • 11111011 111111004 що в додатку 1 склало стає1111101111111100
  • 11111111 000000000 що в додатку 1 було стає же, як 01111111100000000

Отже, у вас є лише один спосіб представити 0 у цьому випадку

Як видно з прикладів, різниця полягає в тому, що:

  • у доповненні 1, з 8 бітів ви можете просто виразити числа від до (від -127 до 127)2 7 - 127+1271
  • у доповненні 2 з 8 бітами ви можете виразити числа від до (від -128 до 127), тому ще одне число 2 7 - 127271

7
Можливо, варто згадати, що додаток 2 має для нього більше переваг, окрім ще одного номера в діапазоні, навіть якщо ви не вникаєте в деталі, що вони є.
KRyan

7
Можна також згадати одну із зазначених переваг у цьому розділі коментарів: Однією з головних переваг є віднімання (/ додавання від’ємних чисел), яке можна реалізувати, лише зробивши вигляд, що числа не підписані та додавши їх. Ніяких особливих випадків, необхідних для віднімання = набагато простіша схема та логіка. На цій сторінці добре написано цю тему.
Джейсон C

3

У доповненнях ви заперечуєте число, гортаючи всі біти. Тому, заперечуючи нуль, дають , що являє собою , що те саме, що і нуль.1 1 - 000110


Одні доповнюють додавання або віднімання з кінцевим перенесенням. Звичайно, те, що відображається програмісту, не повинно бути базовим представленням.
ttw

1
@ttw Питання задає питання про те, якими є два представлення нуля, тож я не впевнений, куди додаються, віднімають і програмісти.
Девід Річербі

3

Якщо говорити про два різних значення 0 у доповненні, то це вводить в оману. Доповнення одного (і два доповнення) - це двійкові представлення чисел. Вони описують спосіб подання чисел у двійковій формі та як робити арифметичні операції на них. Число, яке представлено послідовністю бітів, є значенням.

Коли у вас є якесь значення в доповненні, і ви хочете знайти уявлення значення зі знаком, перевернутим - додатковою оберненою стороною - ви інвертуєте кожен шматочок. Це включає нуль, тому є представлення для і подання для . Але : перевернення знаку на не дає вам іншого значення, воно дає вам те саме значення.- 0 0 = - 0 0000=00

Це дає вам два подання на у доповненні: бітова послідовність та бітова послідовність .0 0 1 100011

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.