RSS RSS
Добавлено: 2005-10-31 22:31:00   Как произвести двоичный ввод-вывод чисел?
Гость



Ответить | Цитировать
Добавлено: 2005-10-31 22:41:18
Raul

Зарегистрирован(а): 17.03.2010

Сообщений: 101 (просмотреть)
Методов двоичного ввода-вывода в классе нет, но зато есть универсальные методы length() и code(), которые дают доступ к внутреннему представлению числа.

Метод length() выдает число слов типа long в дополнительном коде, а метод code() выдает константный указатель на массив слов типа long с дополнительным кодом, где младшее слово имеет индекс 0. Указатель действителен до тех пор, пока над числом не выполняются арифметические операции или операции распределения памяти.

Для доступа к коду по записи преобразуйте указатель code() в long*. Если требуется изменить изменить число слов, запишите его в элемент с индексом -1. Число слов можно уменьшать до 1 или увеличивать в пределах участка памяти, предварительно распределяемого под число методом expand(). Для лучшей производительности рекомендуется нормализовать код так, чтобы он имел минимально необходимое число слов. Нормализацию можно обеспечить вызовом метода fit().

Вот в качестве примера код для присваивания беззнакового значения, большего LONG_MAX:
Код:

cBigNumber a; // Неограниченное число.
unsigned long n = 0xFFFFFFFFUL; // Беззнаковое число,
{ // значение приведено как пример.
a.expand (2); // Память под два слова.
long *pa = (long*) a.code(); // Указатель для модификации кода.
pa [0] = n; // Присвоение числа.
pa [1] = 0; // Нулевое слово для знака.
pa [-1] = 2; // Число слов.
a.fit(); // Нормализация.
} // Удалить указатель.


Ответить | Цитировать