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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.08.2010, 11:59   #1
Negent
Студент
Пользователь
 
Аватар для Negent
 
Регистрация: 11.06.2010
Сообщений: 39
Сообщение Арифметика в ПК

Доброго дня и ночи! Имеется несколько задач, в которых общими словами является размер ячейки:
1. В ячейке, размером в 1 байт, записана константа F3.
Какое десятичное значение этой константы, если:
F3 - беззнаковая константа;
F3 - знаковая константа.
2. В ячейке, размером в 1 байт, выполнить вычитание двоичных чисел:
87 + 42
Объяснить полученный результат.
3. В ячейке, размером в 1 байт, сложить две знаковые константы:
68 +57
Объяснить полученный результат.

С 16- и 2-ной системами исчисления работал, хорошо умею в них считать. Не совсем понимаю, как производятся вычисления, в зависимости от размера ячейки или того, что у нас знаковая или беззнаковая константа.
"...Попытайся ухватить звёзды с небес, чем переживай, что до них не дотянуться..."
Negent вне форума Ответить с цитированием
Старый 27.08.2010, 12:24   #2
dexterua
Пользователь
 
Регистрация: 16.11.2009
Сообщений: 24
По умолчанию

char принимает значение -128...127
unsigned char принимает значение 0...255

Соответственно все значения будут в тех пределах, думаю со сложением и вычитанием разберешься тогда)
dexterua вне форума Ответить с цитированием
Старый 27.08.2010, 12:28   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
В ячейке, размером в 1 байт, выполнить вычитание двоичных чисел:
87 + 42
С каких пор + стал знаком вычитания?
Цитата:
записана константа F3.
Что за константа то?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.08.2010, 13:04   #4
Negent
Студент
Пользователь
 
Аватар для Negent
 
Регистрация: 11.06.2010
Сообщений: 39
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
С каких пор + стал знаком вычитания?

Что за константа то?
Я просто скопировал задачу с методички ХНУРЭ.
1. + действительно не может быть знаком вычитания.
2. F3, возможно, шестнадцатеричное число: 0xF3 или 243
"...Попытайся ухватить звёзды с небес, чем переживай, что до них не дотянуться..."
Negent вне форума Ответить с цитированием
Старый 27.08.2010, 13:16   #5
dexterua
Пользователь
 
Регистрация: 16.11.2009
Сообщений: 24
По умолчанию

для unsigned 0xF3 будет 243
для signed 0xF3 будет -13

а вот 68 +57 - это числа 0x68 и 0x57, или десятичные?
dexterua вне форума Ответить с цитированием
Старый 27.08.2010, 13:16   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

F3=243 в беззнаковой и -13 в знаковой (если калькулятор не врет).
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.08.2010, 07:50   #7
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от Negent Посмотреть сообщение
Я просто скопировал задачу с методички ХНУРЭ.
1. + действительно не может быть знаком вычитания.
2. F3, возможно, шестнадцатеричное число: 0xF3 или 243
Коллеги вы заблуждаетесь. Знак + может быть знаком вычитания если использовать дополнения. Формула такая X + !Y + 1.
Где знак "!" обозначает инверсию числа, т.е. все единицы заменяем нелями, все нули единицами.
Проверим, так ли это. Числа 0x32 - 0x18 = 0x1A.
Число 0x18 в двоичном формате имеет значение 00011000.
Делаем его дополнение 11100111 + 1 = 11101000 + 00110010 = 11A. Убираем перенос в старший разряд и получаем 1A, что и требовалось доказать.
Сложение сработало как вычитание.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 28.08.2010, 11:57   #8
Negent
Студент
Пользователь
 
Аватар для Negent
 
Регистрация: 11.06.2010
Сообщений: 39
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
F3=243 в беззнаковой и -13 в знаковой (если калькулятор не врет).
Как это вычислить??? Помогите методикой!
"...Попытайся ухватить звёзды с небес, чем переживай, что до них не дотянуться..."
Negent вне форума Ответить с цитированием
Старый 28.08.2010, 12:27   #9
Goodwin98
equ asm
Участник клуба
 
Аватар для Goodwin98
 
Регистрация: 02.05.2009
Сообщений: 1,605
По умолчанию

Negent, вам это постом выше описали. Инвертируете биты в числе и прибавляете 1.
Код:
0xf3 = 243 dec = 11110011 bin
00001100 + 1 = 00001101 = 13 dec
Какой вопрос - такой ответ. Не забываем пользоваться поиском, гуглом.
Помощь в выполнении работ по ассемблеру ICQ:2725322O4
Goodwin98 вне форума Ответить с цитированием
Старый 28.08.2010, 13:00   #10
Negent
Студент
Пользователь
 
Аватар для Negent
 
Регистрация: 11.06.2010
Сообщений: 39
По умолчанию

Цитата:
Сообщение от Goodwin98 Посмотреть сообщение
Negent, вам это постом выше описали. Инвертируете биты в числе и прибавляете 1.
Код:
0xf3 = 243 dec = 11110011 bin
00001100 + 1 = 00001101 = 13 dec
Спасибо большое за быстрый способ нахождения представления числа в памяти ПК, но мне бы хорошо бы знать в целом, как происходит такое представление, арифметические действия и подсчёт результата.

Я уже понял что:
Кроме трактовки типов данных с точки зрения их разрядности, микропроцессор на уровне команд поддерживает логическую интерпретацию этих типов:

* Целый тип со знаком — двоичное значение со знаком, размером 8, 16 или 32 бита. Знак в этом двоичном числе содержится в 7, 15 или 31-м бите соответственно. Ноль в этих битах в операндах соответствует положительному числу, а единица — отрицательному. Отрицательные числа представляются в дополнительном коде. Числовые диапазоны для этого типа данных следующие:
- 8-разрядное целое — от –128 до +127;
- 16-разрядное целое — от –32 768 до +32 767;
- 32-разрядное целое — от –231 до +231–1.
* Целый тип без знака — двоичное значение без знака, размером 8, 16 или 32 бита. Числовой диапазон для этого типа следующий:
- байт — от 0 до 255;
- слово — от 0 до 65 535;
- двойное слово — от 0 до 232–1.

Научиться бы высчитывать представление чисел в памяти, до понимания =)
"...Попытайся ухватить звёзды с небес, чем переживай, что до них не дотянуться..."

Последний раз редактировалось Negent; 28.08.2010 в 13:13.
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