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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Невозможное возможно? 
:(
    Опции темы
Salatovec
Дата 1.8.2013, 00:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Доброго времени суток, дорогие форумчане, помогите в следующем вопросе :

Проинициализируйте переменнyю i таким образом, чтобы распечаталось слово.

Код

int i = ???;

int j = - i;

if ( i >= 0 ) exit(0);

if ( j >= 0 ) exit(0);

std::cout<<"hello";


Ответ запишите в виде 0x12345678.

Такое что - действительно возможно? Как? 

Заранее благодарю!
PM MAIL   Вверх
Arantir
Дата 1.8.2013, 00:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Рыбак без удочки
**


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

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



-2147483648


--------------------
interface Жопа {
    // ATTENTION: has to be implemented by every class of the project for proper project work
}
PM   Вверх
Salatovec
Дата 1.8.2013, 00:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Arantir, Спасибо огромное - а можешь объяснить почему так происходит?
PM MAIL   Вверх
Arantir
Дата 1.8.2013, 01:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Рыбак без удочки
**


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

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



Лимиты int — это от -2147483648 до 2147483647. 
Суть в том, что операции компьютер делает с битами. При результате размером больше 32 бит (в случае с int), все лишнее просто отбрасывается.
Так вот дело в том, что умножение -1 на -2147483648 дает первые 32 бита такие же, какие используются для обозначения -2147483648. Разница уже в 33-м бите (положительное 2147483648 — это "1" и 32 нолика), но бит этот отбрасывается.

Так что получается, что -(-2147483648) == -2147483648 при операциях с типом int.


--------------------
interface Жопа {
    // ATTENTION: has to be implemented by every class of the project for proper project work
}
PM   Вверх
bsa
Дата 1.8.2013, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



Другими словами ответ 0x80000000 (для 32-х и 64-х битных систем) или 0x8000 (для систем меньшей разрядности).
Обращение знака для целых типов выполняется по формуле: -x = ~x + 1 => -0x80000000 = 0x7fffffff + 1 = 0x80000000
PM   Вверх
Salatovec
Дата 1.8.2013, 12:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



bsa, Спасибо =)
PM MAIL   Вверх
volatile
Дата 1.8.2013, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 37
Всего: 85



А не боитесь что щас набегут строгие блюстители стандартов, и скажут что это все "не совсем так" ?
на меня они почему-то всегда набегают  smile 

Стандарт не ограныивается только применение дополнительной кодировки.
Цитата

9.9.1.
7. ... this International Standard permits 2’s complement, 1’s complement and signed magnitude representations for integral types.

кстати, именно поэтому сдвиги отриц.чисел считаются UB

PM MAIL   Вверх
bsa
Дата 1.8.2013, 13:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



volatile, так они набегать должны не на меня и даже не на ТС. А на препода, который этот вопрос задал. Но, скорее всего, тема там была из разряда "машинное представление целых чисел со знаком" или "переполнение целых чисел". В любом случае, вопрос очень каверзный, и, не разобравшись в деталях двоичного представления, дать ответ сложно.
PM   Вверх
EgoBrain
Дата 2.8.2013, 03:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(bsa @  1.8.2013,  13:27 Найти цитируемый пост)
volatile, так они набегать ... А на препода, который этот вопрос задал ... вопрос очень каверзный, и, не разобравшись в деталях двоичного представления, дать ответ сложно. 

Дык для того каверзные задания даютс, чтобы ученик раскапывая истину еще попутно множество тем изучил (самообразование), в учебном заведении дается лишь 20% информации.


Цитата(volatile @  1.8.2013,  12:59 Найти цитируемый пост)
на меня они почему-то всегда набегают  smile 

И это хорошо, в такие моменты начинается самое интересное  smile 

PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

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

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


 




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


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

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