Дополнение номера - PullRequest
       3

Дополнение номера

3 голосов
/ 04 октября 2010

Я читаю в Википедии:
«В общем, для кодирования дополнения из radix r, где r - основа (radix) системы счисления, целая часть m цифр и дробная часть n цифр, то r дополнение числа 0 ≤ N

N ** = (r ^ m - N) mod (r ^ m) "

Я не понимаю, зависит ли количество цифр, т. Е. От радиуса r?
Например: если я хочу найти дополнение 100 к 97, то m = 2 или m = 1?
Для m = 2 я получаю ответ как 9903
Для m = 1 я получаю ответ как 03
Так я должен взять m = 2 или m = 1?

1 Ответ

1 голос
/ 07 октября 2010

Статья в Википедии о методе дополнений , вероятно, может дать гораздо лучшее объяснение, чем я, но тем не менее я попытаюсь.

Количество цифр не обязательно зависит от радиуса, а скорее от контекста, в котором оно используется. Другими словами, 5 не имеет дополнения в base-2 (то есть двоичном), но оно имеет дополнение в восьмизначном числе base-2 - 251. Это означает, что в дополнении к двум, -5 может быть представлено как 0b11111011.

Аналогично, 97 не имеет дополнения в базе-100. Он имеет дополнение в однозначном целом, двузначном целом или n-значном целом числе от 100 до 100.

Вы можете разработать арифметическую машину, которая работает с числами дополнения до 100. Если вы используете однозначные целые числа, вы можете представить -3 своей 97-й цифрой. Если вы предпочитаете двузначные целые числа, -3 будет представлено вашей 99-й цифрой, за которой следует ваша 97-я цифра.


Поначалу это сложная концепция, вдвойне в системе счисления, которая еще не разработана - я еще не видел base-100. :-) Попробуйте сначала согнуть свой метод дополнения мышц на меньших основаниях, шестнадцатеричное - хорошее начало.

16 дополнения к 7 в однозначном шестнадцатеричном числе - 9. В двузначном числе это F9. В трехзначном числе это FF9. Отсюда

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...