Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.08.2010, 13:23   #11
Goodwin98
equ asm
Участник клуба
 
Аватар для Goodwin98
 
Регистрация: 02.05.2009
Сообщений: 1,605
По умолчанию

Цитата:
Не совсем понимаю, как производятся вычисления, в зависимости от размера ячейки или того, что у нас знаковая или беззнаковая константа.
Насчет данной задачи нужно помнить, что в 1 байт помещается только 8 бит информации, т.е. не больше 11111111b = 255.

Если число считается знаковым, то последний бит (крайний слева) показывает какой знак у числа. Если он в 1, то число отрицательное, если в 0, то положительное. Соответственно под само число остается уже 7 бит, т.е. помещаться в него не может более чем 01111111b = 127.

При сложении и вычитании знак можно опускать и складывать числа, как будто они беззнаковые. Если в результате получилось число более 255, то лишние биты просто отбрасываются, а после этого преобразуют в нужную систему счисления с учетом знака.

Цитата:
Научиться бы высчитывать представление чисел в памяти, до понимания =)
Переводить системы счисления что ли ?
Какой вопрос - такой ответ. Не забываем пользоваться поиском, гуглом.
Помощь в выполнении работ по ассемблеру ICQ:2725322O4

Последний раз редактировалось Goodwin98; 28.08.2010 в 13:34.
Goodwin98 вне форума Ответить с цитированием
Старый 28.08.2010, 14:09   #12
Negent
Студент
Пользователь
 
Аватар для Negent
 
Регистрация: 11.06.2010
Сообщений: 39
По умолчанию

Цитата:
Сообщение от Goodwin98 Посмотреть сообщение
Переводить системы счисления что ли ?
Да... Наверно, так.
Цитата:
Сообщение от Goodwin98 Посмотреть сообщение
Negent, вам это постом выше описали. Инвертируете биты в числе и прибавляете 1.
Код:
0xf3 = 243 dec = 11110011 bin
00001100 + 1 = 00001101 = 13 dec
Это быстрый способ узнать, как число будет представлено в памяти ПК (верно? отрицательное число так записано в памяти?). Но вот я не понял как потом такие отрицательные числа переводить в положительные (поправьте пожалуйста, если не прав):
Если скажем, у нас имеется беззнаковая константа, то понятно, что чем больше число, тем больше оно будет в памяти. От 0 до 255 - соответственно число будет возрастать, затем при необходимости, можно переводить по известному правилу в двоичную систему счисления. Высчитывается номер позиции числа справа налево по возрастающей, и эта позиция является степенью для двойки, результат умножается на значение бита. Но если производить перевод по такому же правилу для отрицательных чисел, вроде 11111111 (-1, именно так оно записано в памяти?) то получится совсем не -1, а больше (два в степени 7, прибавить 2 в степени 6 и т.д.). Вот меня и интересует, по возможности, как производить операции с отрицательными числами. Их представление в памяти, операции с ними. Досадный пробел в знаниях, даже можно меня послать даже читать книгу или статью. Безграмотность надо ликвидировать.
"...Попытайся ухватить звёзды с небес, чем переживай, что до них не дотянуться..."
Negent вне форума Ответить с цитированием
Старый 28.08.2010, 14:18   #13
Negent
Студент
Пользователь
 
Аватар для Negent
 
Регистрация: 11.06.2010
Сообщений: 39
По умолчанию

Уже нашёл способ. Читаю Вики: Дополнительный код (представление числа)
"...Попытайся ухватить звёзды с небес, чем переживай, что до них не дотянуться..."
Negent вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Целочисленная арифметика Neyrone Помощь студентам 4 11.03.2010 09:53
Длинная арифметика Indira Общие вопросы C/C++ 2 24.01.2010 10:28
Арифметика в C iggor Помощь студентам 3 01.12.2009 12:40