Христианская проза
Христианская поэзия
Путевые заметки, очерки
Публицистика, разное
Поиск
Христианская поэзия
Христианская проза
Веб - строительство
Графика и дизайн
Музыка
Иконопись
Живопись
Переводы
Фотография
Мой путь к Богу
Обзоры авторов
Поиск автора
Поэзия (классика)
Конкурсы
Литература
Живопись
Киноискусство
Статьи пользователей
Православие
Компьютеры и техника
Загадочное и тайны
Юмор
Интересное и полезное
Искусство и религия
Поиск
Галерея живописи
Иконопись
Живопись
Фотография
Православный телеканал 'Союз'
Максим Трошин. Песни.
Светлана Копылова. Песни.
Евгения Смольянинова. Песни.
Иеромонах РОМАН. Песни.
Жанна Бичевская. Песни.
Ирина Скорик. Песни.
Православные мужские хоры
Татьяна Петрова. Песни.
Олег Погудин. Песни.
Ансамбль "Сыновья России". Песни.
Игорь Тальков. Песни.
Андрей Байкалец. Песни.
О докторе Лизе
Интернет
Нужды
Предложения
Работа
О Причале
Вопросы психологу
Христианcкое творчество
Все о системе NetCat
Обсуждение статей и программ
Последние сообщения
Полезные программы
Забавные программки
Поиск файла
О проекте
Рассылки и баннеры
Вопросы и ответы
 
 Домой  Форумы / Обсуждение статей и программ / Ошибка при операциях с беззнаковыми числами Войти на сайт / Регистрация  Карта сайта     Language По-русски По-английски
Обсуждение статей
Консультации по программе NetMap
Консультации по программе CreateSFX
Консультации по классу cBigNumber
Консультации по шаблонам динамических массивов

Интересно:
Рекомендуем посетить:

 
Ошибка при операциях с беззнаковыми числами
Добавлено: 2005-10-29 21:45:18   Ошибка при операциях с беззнаковыми числами
Гость

Код:

cBigNumber a,b;
DWORD dw_num;
a.set("5F020007",16); // a = 5F020007
a.setshl(a,32); // a = 5F020007 00000000
dw_num = 0x8EDF3155; // dw_num = 8EDF3155;
b=a+dw_num; // b = 5F020006 8EDF3155, ожидалось 5F020007 8EDF3155


Ответить | Цитировать
Добавлено: 2005-10-29 21:46:49
Raul

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

Сообщений: 101 (просмотреть)
Класс предназначен для операций с числами со знаком. Комбинированных операций со знаковыми и безнаковыми числами там нет, поэтому безнаковые числа DWORD преобразуются транслятором С в знаковые. Т.е. DWORD dw_num = 0x8EDF3155 - становится отрицательным числом.

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

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


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




Домой написать нам
Дизайн и программирование
N-Studio
Причал: Христианское творчество, психологи Любая перепечатка возможна только при выполнении условий. Несанкционированное использование материалов запрещено. Все права защищены
© 2022 Причал
Наши спонсоры: