![]() |
|
Модераторы: LSD |
![]()
|
|
| Krol01 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 6.12.2009 Репутация: нет Всего: нет |
Добрый день.
Нужна помощь по сложению чисел в двоичном коде. В общем то проблема состоит в сложении отрицательных чисел. На сколько я понял, то отрицательное переводится в дополнительный код, но самой сути как это делать не понял. Поискал в гугле, но там все размыто, запутался еще больше :( Нужно сложить два числа: 16+ (-32). 16 =10000, 32 =100000. А вот выразить число -32 затрудняюсь. Если не трудно, то распишите все от и до как делать, буду очень благодарен. |
|||
|
||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 4 Всего: 315 |
а на каком языке вам это нужно?
потому что на бумажке, это так и выглядит: 10000 - 100000 = -10000 |
|||
|
||||
| Krol01 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 6.12.2009 Репутация: нет Всего: нет |
ну как бы для перевода отрицательного числа в двоичный код необходимо перевести его в дополнительный...вот я и спрашивал как это сделать.
|
|||
|
||||
| bilbobagginz |
|
|||
![]() Naughtius Maximus ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8813 Регистрация: 2.3.2004 Где: Israel Репутация: 10 Всего: 317 |
Krol01, существует 2 основных вида хранения отрицательных двоичных чисел -
"1's complement" - дополнение до 1-го (Когда отрицательные числа - это логический NOT относительно положительных) "2's complement" - дополнение до 2-х (когда отрицательные числа - это сначала делается NOT, а потом добавляется 1) перевод из 2's compl. обратно делается в том же порядке - отрицательному числу делается NOT и добавляется 1, и результат - величина ортицательного числа предсавленного нам. выбрав метод "дополнение до 2-х": нужно понимать, что есть 2 пути работы - когда ты знаешь диапазон чисел, и когда не знаешь. путь 1 (не зная диапазон) то у отрицательных числе, без обозначения ширины самая главная цифра определяет значение всех цифр левее её. т.е. если число положительное - у него слева будет 0. а отрицательное - 1. т.е. если число положительное - его пишут так х=010000 а то же отрицательное ( (!х)+1 ) 101111+1=110000 (самая левая единца - это место начиная с к-рого идут влево только единицы ...111111110000) -х=110000 теперь сложение: х+-х=010000+110000=0 --- путь 2 (если ты ЗНАЕШЬ, в каком диапазоне работаешь) у любого числа (которое можно представить при помощи данной ширины) есть ширина, напр. у интел процессоров для целых чисел (signed int) используется 32 бита.
перевод из 2's complement в десятиричную систему: -16. Это сообщение отредактировал(а) bilbobagginz - 6.12.2009, 16:08 -------------------- Я ещё не демон. Я только учусь. |
|||
|
||||
| Krol01 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 6.12.2009 Репутация: нет Всего: нет |
bilbobagginz, Спасибо, теперь разобрался
|
|||
|
||||
![]()
|
| Правила форума "Разные вопросы" | |
|
|
Сюда нужно постить только темы, которые нельзя отнести ни к одному из существующих разделов. Если вы не уверены, то просмотрите еще раз заголовки форумов, карту форума или попробуйте воспользоваться поиском.
С уважением, Smartov. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Разные вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |