![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Salatovec |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 213 Регистрация: 9.1.2008 Репутация: нет Всего: -1 |
Доброго времени суток, дорогие форумчане, помогите в следующем вопросе :
Проинициализируйте переменнyю i таким образом, чтобы распечаталось слово.
Ответ запишите в виде 0x12345678. Такое что - действительно возможно? Как? Заранее благодарю! |
|||
|
||||
Arantir |
|
|||
Рыбак без удочки ![]() ![]() Профиль Группа: Участник Сообщений: 960 Регистрация: 18.11.2012 Репутация: 1 Всего: 55 |
-2147483648
-------------------- interface Жопа { // ATTENTION: has to be implemented by every class of the project for proper project work } |
|||
|
||||
Salatovec |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 213 Регистрация: 9.1.2008 Репутация: нет Всего: -1 |
Arantir, Спасибо огромное - а можешь объяснить почему так происходит?
|
|||
|
||||
Arantir |
|
|||
Рыбак без удочки ![]() ![]() Профиль Группа: Участник Сообщений: 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 } |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
Другими словами ответ 0x80000000 (для 32-х и 64-х битных систем) или 0x8000 (для систем меньшей разрядности).
Обращение знака для целых типов выполняется по формуле: -x = ~x + 1 => -0x80000000 = 0x7fffffff + 1 = 0x80000000 |
|||
|
||||
Salatovec |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 213 Регистрация: 9.1.2008 Репутация: нет Всего: -1 |
bsa, Спасибо =)
|
|||
|
||||
volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 37 Всего: 85 |
А не боитесь что щас набегут строгие блюстители стандартов, и скажут что это все "не совсем так" ?
на меня они почему-то всегда набегают ![]() Стандарт не ограныивается только применение дополнительной кодировки.
кстати, именно поэтому сдвиги отриц.чисел считаются UB |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
volatile, так они набегать должны не на меня и даже не на ТС. А на препода, который этот вопрос задал. Но, скорее всего, тема там была из разряда "машинное представление целых чисел со знаком" или "переполнение целых чисел". В любом случае, вопрос очень каверзный, и, не разобравшись в деталях двоичного представления, дать ответ сложно.
|
|||
|
||||
EgoBrain |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 23.3.2008 Где: Комната Репутация: нет Всего: 2 |
Дык для того каверзные задания даютс, чтобы ученик раскапывая истину еще попутно множество тем изучил (самообразование), в учебном заведении дается лишь 20% информации. И это хорошо, в такие моменты начинается самое интересное ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |