![]() |
|
Модераторы: Poseidon |
![]()
|
|
| En_t_end |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 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. Но тут как говориться "ой", ведь переменные - однобайтовые, получается переполнение. Что делать ? В каком виде ответ записывать, если он вообще существует. |
|||
|
||||
| Dreamer_0x01 |
|
|||
![]() Терминатор ![]() ![]() Профиль Группа: Участник Сообщений: 780 Регистрация: 14.4.2005 Где: Санкт-Петербург Репутация: 1 Всего: 12 |
-------------------- Нет ничего невозможного. Есть цели, и есть время и силы на их достижение. |
|||
|
||||
| En_t_end |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2074 Регистрация: 4.12.2004 Репутация: 2 Всего: 20 |
206(10) = CE(16)
208(10) = D0(16) |
|||
|
||||
| cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 15 Всего: 99 |
Если переменные знаковые, то тогда (-50-(-48))*(-23) = 46. Пока не понял в чем проблема...
Это сообщение отредактировал(а) cardinal - 12.2.2006, 16:28 -------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
| En_t_end |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2074 Регистрация: 4.12.2004 Репутация: 2 Всего: 20 |
Dreamer_0x01
Я имею ввиду переменные типа char. Кстати возможно я не прав, но по-моему 1-байтовые переменные, это переменные принимающие максимальное значение 11111111(2) |
|||
|
||||
| Dreamer_0x01 |
|
|||
![]() Терминатор ![]() ![]() Профиль Группа: Участник Сообщений: 780 Регистрация: 14.4.2005 Где: Санкт-Петербург Репутация: 1 Всего: 12 |
Получается, если пользоваться общепринятым стандартом записи отрицательных чисел:
(-50-(-48))*(-23)=0x2E (46 в десятичной) Это сообщение отредактировал(а) Dreamer_0x01 - 12.2.2006, 16:13 -------------------- Нет ничего невозможного. Есть цели, и есть время и силы на их достижение. |
|||
|
||||
| En_t_end |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2074 Регистрация: 4.12.2004 Репутация: 2 Всего: 20 |
||||
|
||||
| Dreamer_0x01 |
|
|||
![]() Терминатор ![]() ![]() Профиль Группа: Участник Сообщений: 780 Регистрация: 14.4.2005 Где: Санкт-Петербург Репутация: 1 Всего: 12 |
в любой знаковой переменной старшая единица - это знаковый разряд.
Соответственно, диапазон таких чисел будет от -128 до127. Стандарт сейчас попробуем найти. Для начала копнем в понятие прямых, обратных, дополнительных кодов, а также работы процессора ;) Это сообщение отредактировал(а) Dreamer_0x01 - 12.2.2006, 16:10 -------------------- Нет ничего невозможного. Есть цели, и есть время и силы на их достижение. |
|||
|
||||
| En_t_end |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2074 Регистрация: 4.12.2004 Репутация: 2 Всего: 20 |
Dreamer_0x01
То есть максимальное значение - (знак 1 или 0) 1111111(2) = 127 или -127. Как не переводя в двоичный код, узнать каков знак числа? |
|||
|
||||
| Dreamer_0x01 |
|
|||
![]() Терминатор ![]() ![]() Профиль Группа: Участник Сообщений: 780 Регистрация: 14.4.2005 Где: Санкт-Петербург Репутация: 1 Всего: 12 |
А чтобы было понятно - вот твой пример, и посмотри его в отладчике ;)
Добавлено @ 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 -------------------- Нет ничего невозможного. Есть цели, и есть время и силы на их достижение. |
|||
|
||||
| En_t_end |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2074 Регистрация: 4.12.2004 Репутация: 2 Всего: 20 |
Dreamer_0x01
То есть значимость младших разрядов в отрицательных числах обратна значимости их в аналогично неотрицательных, что в принципе понятно. |
|||
|
||||
| cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 15 Всего: 99 |
if (a & 0x80) то а число отрицательное... -------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
| En_t_end |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2074 Регистрация: 4.12.2004 Репутация: 2 Всего: 20 |
cardinal
Я имею ввиду в устном счете. |
|||
|
||||
| Dreamer_0x01 |
|
|||
![]() Терминатор ![]() ![]() Профиль Группа: Участник Сообщений: 780 Регистрация: 14.4.2005 Где: Санкт-Петербург Репутация: 1 Всего: 12 |
Если рисовать множество чисел на бумажке, то сначала идет оложительный диапазон, а потом к положительному как бы "приклеивается" справа отрицательный диапазон. То есть числа все время возрастают, но в такой последовательности: 0,1,2,...126,127,-128,-127,...,-2,-1.
Всего 256 таких чисел для однобайтовой знаковой переменной. Для двухбайтовой механизм будет таким же. Добавлено @ 16:46 Ну не знаю, обычные люди в устном счете используют десятичные числа, а не однобайтовые знаковые переменные в двоичном коде ;) -------------------- Нет ничего невозможного. Есть цели, и есть время и силы на их достижение. |
|||
|
||||
| En_t_end |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2074 Регистрация: 4.12.2004 Репутация: 2 Всего: 20 |
Dreamer_0x01
Если не трудно напиши твой алгоритм действий, если ты видишь число 0xCE сказанно n-байтовое, знаковое. Мне нужно знать на каком именно этапе нужно определять знак. Добавлено @ 16:52 Dreamer_0x01 ААААА... я понял, всё огромное спасибо....!!!! То есть "01111111b" = 127, дальше до "11111111b" < 0. |
|||
|
||||
| Dreamer_0x01 |
|
|||
![]() Терминатор ![]() ![]() Профиль Группа: Участник Сообщений: 780 Регистрация: 14.4.2005 Где: Санкт-Петербург Репутация: 1 Всего: 12 |
еще раз повторяю: Видишь единицу в самом старшемразряде числа (то бишь "показывая пальцем" - крайнем левом, то есть число вида 1ХХХХХХХb), то это число отрицательное. Видишь там нолик, "то есть число вида 0ххххххх, то это число положительное.
В шестнадцатеричном виде, соответственно, если число начинается с восьмерки или буквы, то число отрицательное, если с цыфры от 0 до 7 - положительное ;) Никаких алгоритмов тут больше и не придумать -------------------- Нет ничего невозможного. Есть цели, и есть время и силы на их достижение. |
|||
|
||||
| Dreamer_0x01 |
|
|||
![]() Терминатор ![]() ![]() Профиль Группа: Участник Сообщений: 780 Регистрация: 14.4.2005 Где: Санкт-Петербург Репутация: 1 Всего: 12 |
Вообще, если у тебя возникла проблема вподобной теме (или ты закосил какую-то важную лекцию
Например, по Яндексу я нашел следующие ссылки: http://emc.km.ru/theory/info/b14_2.html http://www.rbtl.ru/wsap/posobie/chapter1/2.htm Вполне доступно, особенно в первой мне понравились иллюстрации с окружностями - в общем-то, то самое, что я так долго пытался до тебя довести После прочтения этих недлинных страничек ты перестанешь путаться в представлениях чисел. -------------------- Нет ничего невозможного. Есть цели, и есть время и силы на их достижение. |
|||
|
||||
![]()
|
| Правила форума "Центр помощи" | |
|
|
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Центр помощи | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |