Модераторы: Poseidon

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Простенькая задачка... информатика 1-байтовые пер. 
:(
    Опции темы
En_t_end
Дата 12.2.2006, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: 2
Всего: 20



Переменные X,X1,X2,X3 - 1-байтовые, знаковые.
X1 = CE(16), X2 = D0(16), X3 = E9(16)
Нужно вычислить X = (X1-X2)*X3 в десятичной системе счисления.
Если изначально считать всё в десятичной, то получиться следующее: 206-208 = -2; -2*233 = -466. Но тут как говориться "ой", ведь переменные - однобайтовые, получается переполнение. Что делать ? В каком виде ответ записывать, если он вообще существует.
PM MAIL ICQ Skype GTalk Jabber   Вверх
Dreamer_0x01
Дата 12.2.2006, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Терминатор
**


Профиль
Группа: Участник
Сообщений: 780
Регистрация: 14.4.2005
Где: Санкт-Петербург

Репутация: 1
Всего: 12



А откуда ты взял 206 и 208?

Цитата(En_t_end @ 12.2.2006, 15:18 Найти цитируемый пост)
1-байтовые, знаковые.






--------------------
Нет ничего невозможного. Есть цели, и есть время и силы на их достижение.
PM ICQ   Вверх
En_t_end
Дата 12.2.2006, 15:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: 2
Всего: 20



206(10) = CE(16)
208(10) = D0(16)
PM MAIL ICQ Skype GTalk Jabber   Вверх
cardinal
Дата 12.2.2006, 15:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 15
Всего: 99



Если переменные знаковые, то тогда (-50-(-48))*(-23) = 46. Пока не понял в чем проблема...

Это сообщение отредактировал(а) cardinal - 12.2.2006, 16:28


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
En_t_end
Дата 12.2.2006, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: 2
Всего: 20



Dreamer_0x01
Я имею ввиду переменные типа char. Кстати возможно я не прав, но по-моему 1-байтовые переменные, это переменные принимающие максимальное значение 11111111(2)
PM MAIL ICQ Skype GTalk Jabber   Вверх
Dreamer_0x01
Дата 12.2.2006, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Терминатор
**


Профиль
Группа: Участник
Сообщений: 780
Регистрация: 14.4.2005
Где: Санкт-Петербург

Репутация: 1
Всего: 12



Получается, если пользоваться общепринятым стандартом записи отрицательных чисел:
(-50-(-48))*(-23)=0x2E (46 в десятичной)

Это сообщение отредактировал(а) Dreamer_0x01 - 12.2.2006, 16:13


--------------------
Нет ничего невозможного. Есть цели, и есть время и силы на их достижение.
PM ICQ   Вверх
En_t_end
Дата 12.2.2006, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: 2
Всего: 20



Dreamer_0x01,
cardinal,
Цитата(Dreamer_0x01 @ 12.2.2006, 20:02 Найти цитируемый пост)

общепринятым стандартом записи

Покажите мне его...
PM MAIL ICQ Skype GTalk Jabber   Вверх
Dreamer_0x01
Дата 12.2.2006, 16:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Терминатор
**


Профиль
Группа: Участник
Сообщений: 780
Регистрация: 14.4.2005
Где: Санкт-Петербург

Репутация: 1
Всего: 12



в любой знаковой переменной старшая единица - это знаковый разряд.
Соответственно, диапазон таких чисел будет от -128 до127.

Стандарт сейчас попробуем найти.
Для начала копнем в понятие прямых, обратных, дополнительных кодов, а также работы процессора ;)

Это сообщение отредактировал(а) Dreamer_0x01 - 12.2.2006, 16:10


--------------------
Нет ничего невозможного. Есть цели, и есть время и силы на их достижение.
PM ICQ   Вверх
En_t_end
Дата 12.2.2006, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: 2
Всего: 20



Dreamer_0x01
То есть максимальное значение - (знак 1 или 0) 1111111(2) = 127 или -127. Как не переводя в двоичный код, узнать каков знак числа?
PM MAIL ICQ Skype GTalk Jabber   Вверх
Dreamer_0x01
Дата 12.2.2006, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Терминатор
**


Профиль
Группа: Участник
Сообщений: 780
Регистрация: 14.4.2005
Где: Санкт-Петербург

Репутация: 1
Всего: 12



А чтобы было понятно - вот твой пример, и посмотри его в отладчике ;)

Код

{
    char x,x1,x2,x3;
    x1=0xCE;
    x2=0xD0;
    x3=0xE9;
    x=(x1-x2)*x3;

}

Добавлено @ 16:20
Нет, немножко не так.

Знак числа: старшая единица. То есть если это "1" - то число отрицательное. (разумеется, если у тебя тип знаковый)

Далее.
Число 0x80, это "10000000b" соответствует -128.
Число 0x81, это "10000001b" соответствует -127.
Число 0x82, это "10000010b" соответствует -126.
..........................
Число 0xFF, это "11111111b" соответствует -1.

Ну а числа в диапазоне от 0x00 до 0x7F привычным тебе образом преобразовываются в числа от 0 до 127.

Это сообщение отредактировал(а) Dreamer_0x01 - 12.2.2006, 16:21


--------------------
Нет ничего невозможного. Есть цели, и есть время и силы на их достижение.
PM ICQ   Вверх
En_t_end
Дата 12.2.2006, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: 2
Всего: 20



Dreamer_0x01
То есть значимость младших разрядов в отрицательных числах обратна значимости их в аналогично неотрицательных, что в принципе понятно.
PM MAIL ICQ Skype GTalk Jabber   Вверх
cardinal
Дата 12.2.2006, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 15
Всего: 99



Цитата(En_t_end @ 12.2.2006, 14:14 Найти цитируемый пост)
Как не переводя в двоичный код, узнать каков знак числа?

if (a & 0x80) то а число отрицательное...


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
En_t_end
Дата 12.2.2006, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: 2
Всего: 20



cardinal
Я имею ввиду в устном счете.
PM MAIL ICQ Skype GTalk Jabber   Вверх
Dreamer_0x01
Дата 12.2.2006, 16:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Терминатор
**


Профиль
Группа: Участник
Сообщений: 780
Регистрация: 14.4.2005
Где: Санкт-Петербург

Репутация: 1
Всего: 12



Если рисовать множество чисел на бумажке, то сначала идет оложительный диапазон, а потом к положительному как бы "приклеивается" справа отрицательный диапазон. То есть числа все время возрастают, но в такой последовательности: 0,1,2,...126,127,-128,-127,...,-2,-1.
Всего 256 таких чисел для однобайтовой знаковой переменной.
Для двухбайтовой механизм будет таким же.
Добавлено @ 16:46
Цитата(En_t_end @ 12.2.2006, 16:29 Найти цитируемый пост)
Я имею ввиду в устном счете.

Ну не знаю, обычные люди в устном счете используют десятичные числа, а не однобайтовые знаковые переменные в двоичном коде ;)


--------------------
Нет ничего невозможного. Есть цели, и есть время и силы на их достижение.
PM ICQ   Вверх
En_t_end
Дата 12.2.2006, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: 2
Всего: 20



Dreamer_0x01
Если не трудно напиши твой алгоритм действий, если ты видишь число 0xCE сказанно n-байтовое, знаковое. Мне нужно знать на каком именно этапе нужно определять знак.
Добавлено @ 16:52
Dreamer_0x01
ААААА... я понял, всё огромное спасибо....!!!!
То есть "01111111b" = 127, дальше до "11111111b" < 0.
PM MAIL ICQ Skype GTalk Jabber   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0669 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.