Форум программистов, компьютерный форум, киберфорум
CoderHuligan
Войти
Регистрация
Восстановить пароль
Рейтинг: 3.00. Голосов: 1.

Как запомнить знаковые и беззнаковые диапазоны максимальных значений

Запись от CoderHuligan размещена 05.06.2024 в 17:36
Обновил(-а) CoderHuligan 05.06.2024 в 18:09

Не будем о том зачем это нужно. Это может пригодиться в самых разных случаях.
Итак, как же запомнить эти числа тем, кто не очень дружит с запоминанием чисел.
Вот эти диапазоны:
Код:
signed char          -128, 127
unsigned char        255
signed short int    -32768, 32767
unsigned short int  65535
signed long int      -2147483648, 2147483647
unsigned long int    4294967295
Чтобы крепко запомнить эти значения, надо прежде всего выявить некоторые закономерности в самих числах.
1. все знаковые отрицательные (предельные значения естественно) числа всегда оканчиваются на цифру 8
2. все знаковые положительные числа всегда оканчиваются на цифру 7
3. все беззнаковые предельные числа всегда оканчиваются на цифру 5
Итак это легко запомнить. При этом для простого char достаточно помнить числа 12 и 25 (-128, 127 и 255).
Сложнее запомнить тип short и int. Тут подход тот же самый: выявляем закономерности. Возьмем тип знаковый short. Это числа -32768 и 32767. Мы видим что эти числа различаются только последней цифрой, которая как мы уже знаем, может быть только 7 или 8. Значит нам нужно запомнить только 4 цифры: 3276. Мы замечаем, что все цифры разные, и что тройка на единицу больше чем следующая за ней цифра 2. А цифра 7 больше на единицу следующей за ней цифры 6. К тому же цифры 3 и 7 нечетные, а цифры 2 и 6 четные. Поэтому достаточно запомнить только числа 37 или 26, чтобы по ним пользуясь правилами закономерности, вспомнить всё число 3276.
Далее беззнаковое short. Это число 65535. Сразу отбрасываем 5: 6553. Надо запомнить 4 цифры. Сразу отмечаем, что беззнаковое начинается на цифру 6, которая вдвое больше, чем первая цифра знакового: 3. Далее:
1. вторая цифра на единицу меньше, чем первая.
2. следующая одинакова со второй. А последняя тройка вдвое меньше чем первая.
Итак идем далее и берем тип int.
Это числа -2147483648, 2147483647 и 4294967295.
Как запомнить это? Опять выявляем закономерности. Числа имеют по 10 цифр. Отбрасывая последнюю цифру,которая может быть только 7, 8 или 5 (для беззнакового предельного числа), мы имеем уже 9 цифр.
Берем знаковое число без последней цифры. Значит нам нужно запомнить число 214748364. Сразу отметим и запомним, что оно начинается на 2, а оканчивается на вдвое большую цифру; 4. Разделим оставшиеся цифры на блоки для большей ясности:
147 48 36.
Что мы здесь видим, какие закономерности?
1. число 47 тоже самое число, которым оканчивается положительно знаковое число: 2147483647.
2. цифра 1 меньше на единицу, чем первая цифра: 2147483647. (Помните, как в типе short?).
3. число 48 тоже самое число, которым заканчивается отрицательное предельное число: 2147483648.
4. числа 48 и 36 имеют одинаковую особенность, что вторая цифра в два раза больше чем первая.
5. цифра 3 на единицу меньше цифры 4 в числе 48.
При этом достаточно запомнить, что число начинается на 2, и цифры 48 и 36.

Теперь берем беззнаковое целое 4294967295. Как его запомнить? Сразу отбрасываем пятерку, получая 429496729.
Отмечаем, что беззнаковое начинается на 4, вдвое большее цифры 2 в знаковом числе. Далее:
1. видим, что число 29 повторяется дважды: 429496729, в конце и сразу после первой цифры 4. И что вторая цифра 2 вдвое меньше первой цифры 4.
Выделим блоки: 4 29 49 67 29.
2. цифра 7, которая стоит перед последним числом 29, есть разность 9 - 2 = 7.
3. цифра 6, которая стоит перед цифрой 7, на единицу меньше семерки.
4. число 49, которое стоит перед чцифрой 6 (или числом 67) получается 6 * 7 = 42 + 9 - 2 = 49.
5. или цифра 9 в числе 49 есть перевернутая цифра 6 в числе 67.
6. тогда, цифра 4 в числе 49 есть вторая после первого числа 29 и равна первой цифре предельного беззнакого числа: 4 29 49 67 29 5.
Вот кажется и всё на этом. Если кто выявит и другие закономерности, которые упрощают запоминание сих чисел, прошу указать это в комментариях. Спасибо за внимание!
Размещено в Без категории
Показов 2748 Комментарии 46
Всего комментариев 46
Комментарии
  1. Старый комментарий
    Гляжу, месье знает толк в извращениях

    Остальные же просто десятилетиями юзают в c/c++ именованные константы (типа MAX_INT) из заголовочников values.h / limits.h

    Ну или можно просто знать школьную информатику.
    В 16разрядном представлении числа не надо знать/запоминать ничего кроме длины числа в байтах - чтобы записать 0xFF / 0xFFFF / 0xFFFFFFFF для макс.значений однобайтного/двухбайтного/четырёхбайтного беззнакового целочисленного типа. Или 0x7F / 0x7FFF / 0x7FFFFFFF для макс.значений знаковых типов.
    Для минимальных (отрицательных) - всего-то нужно узнать в той же самой информатике про дополнительный код, после чего соответствующие 16ричные константы тоже будут отличаться только длиной своих одинаковых "хвостов".
    Запись от VTsaregorodtsev размещена 05.06.2024 в 20:48 VTsaregorodtsev вне форума
  2. Старый комментарий
    Аватар для Fedor92
    sc -2^7, 2^7-1

    uc 2^8-1

    ssi -2^15, 2^15-1

    usi 2^16-1

    sli -2^31, 2^31-1

    uli 2^32-1

    В десятичной системе проще всего запоминать степени двойки. И помнить -1 для положительных чисел, поскольку 0 относится к диапазону положительных чисел.

    Можно также визуально представлять числа в Декартовой системе координат.


    -2^7 -2^6 -2^5 -2^4 -2^3 -2^2 -2^1 -2^0 0 2^0 2^1 2^2 2^3 2^4 2^5 2^6 2^7
    Запись от Fedor92 размещена 05.06.2024 в 23:39 Fedor92 вне форума
    Обновил(-а) Fedor92 06.06.2024 в 01:16
  3. Старый комментарий
    Аватар для CoderHuligan
    Извращения начнутся когда вас на собеседовании попросят написать эти числа не заглядывая в справочники.
    Я просто изложил свой метод запоминания.
    Вот еще одна закономерность в числе 2147483647:
    число 48 идет аккурат за числом 47: 21 47 48 3647, то есть на единицу больше.
    Запись от CoderHuligan размещена 06.06.2024 в 10:27 CoderHuligan вне форума
    Обновил(-а) CoderHuligan 06.06.2024 в 10:29
  4. Старый комментарий
    Аватар для CoderHuligan
    И еще:
    число 36 получается если от 48 вычесть перевернутое 21, т.е. 12: 48 - 12 = 36
    Запись от CoderHuligan размещена 06.06.2024 в 10:32 CoderHuligan вне форума
  5. Старый комментарий
    Аватар для Croessmah
    А если у меня в железяке регистр в 40 бит, то каковы эти значения?

    Ну и устаревший метод - калькулятор.

    Цитата:
    Сообщение от CoderHuligan Просмотреть комментарий
    Извращения начнутся когда вас на собеседовании попросят написать эти числа не заглядывая в справочники.
    Я бы не стал туда устраиваться на работу.
    Запись от Croessmah размещена 06.06.2024 в 11:11 Croessmah вне форума
    Обновил(-а) Croessmah 06.06.2024 в 11:15
  6. Старый комментарий
    Аватар для CoderHuligan
    Цитата:
    А если у меня в железяке регистр в 40 бит, то каковы эти значения?
    А если в 57 бит, а если 75 бит ( и так далее)? Это чистая демагогия. Известные популярные системы имеют либо 32 битную архитектуру, либо 64 битную. Вот под 64 бита стоит подумать. То есть под значения:
    -9 223 372 036 854 775 808 ÷ 9 223 372 036 854 775 807 и беззнаковое: 18 446 744 073 709 551 615
    Запись от CoderHuligan размещена 06.06.2024 в 14:13 CoderHuligan вне форума
    Обновил(-а) CoderHuligan 06.06.2024 в 14:20
  7. Старый комментарий
    Аватар для Fedor92
    Цитата:
    Я бы не стал туда устраиваться на работу.
    Если так пичужат на собеседовании нужно отвечать на их языке. 2 в 16-й и ничего не знаю А то ишь выискались, назови им цифры числа ПИ до 356784 знака
    Запись от Fedor92 размещена 06.06.2024 в 14:16 Fedor92 вне форума
  8. Старый комментарий
    Аватар для CoderHuligan
    Интересная статья на хабре по этому вопросу: https://habr.com/ru/articles/141475/
    Ну и книжка по мнемонике: https://kaiu.narod.ru/LearnToR... _Mnemo.pdf
    Там иные способы запоминания, очень, кстати, интересные.
    Запись от CoderHuligan размещена 06.06.2024 в 15:19 CoderHuligan вне форума
  9. Старый комментарий
    Аватар для Croessmah
    Цитата:
    Сообщение от CoderHuligan Просмотреть комментарий
    Это чистая демагогия
    Это реальная железяка.
    Где-то на форуме я даже вырезку из даташита оставлял с размерами.
    Запись от Croessmah размещена 06.06.2024 в 21:21 Croessmah вне форума
    Обновил(-а) Croessmah 06.06.2024 в 21:25
  10. Старый комментарий
    Цитата:
    Сообщение от CoderHuligan Просмотреть комментарий
    Извращения начнутся когда вас на собеседовании попросят написать эти числа не заглядывая в справочники.
    Я их и записал. Не заглядывая в справочники. Просто я их записал не в привычной тебе 10тичной системе счисления.
    Для выбранного тобой десятка констант - 16ричка даёт более простые для запоминания значения, чем 10тичка или 8ричка.
    Но всеми тремя названными СС (и ещё двоичной) в сях/плюсах можно пользоваться без каких-либо ограничений.
    И там, где ты упорото будешь запоминать какие-то "неудобные" числа - другие будут просто переключаться на запись этих чисел в более удобных СС.

    Ну и мне вспоминаются слова из песни Высоцкого: "Ваше предложение, - говорю, - убогое". Запоминание записей десятка констант в единственной СС - дно донное Прекращай колотить понты насчёт якобы крутизны и востребованности схемы запоминания.
    Запись от VTsaregorodtsev размещена 06.06.2024 в 23:02 VTsaregorodtsev вне форума
  11. Старый комментарий
    Аватар для CoderHuligan
    Цитата:
    Для выбранного тобой десятка констант - 16ричка даёт более простые для запоминания значения, чем 10тичка или 8ричка.
    А причем здесь шестнадцатиричка? Речь идет именно о десятичной системе! Как наиболее дружественной человеку, а нее машине. Попробуйте выполнять арифметические операции в 16-ричной системе.. Константы в коде - пожалуйста пишите в hex. Компилятор проглотит и не подавится. А человеку привычнее иметь дело с 3,14.. Да и способ довольно оригинален, вот почему поделился. Конечно не во всех случаях он рабочий, как в прочем и остальные способы..
    Запись от CoderHuligan размещена 07.06.2024 в 12:30 CoderHuligan вне форума
  12. Старый комментарий
    Аватар для Croessmah
    Цитата:
    Сообщение от CoderHuligan Просмотреть комментарий
    Попробуйте выполнять арифметические операции в 16-ричной системе.
    На парах когда-то этим занимались. Ничего страшного.

    Вы вот придумали какую-то проблему сами себе и теперь доказываете как героически её побороли.
    Недавно как раз обсуждали, что запоминание десяти тысяч знаков числа Пи не дает человеку вообще ничего, кроме ЧСВ.
    Запись от Croessmah размещена 07.06.2024 в 15:21 Croessmah вне форума
  13. Старый комментарий
    Аватар для CoderHuligan
    Если ничего страшного, почему математики этим не занимаются и в учебниках для малышей не рекомендуют?
    Цитата:
    Недавно как раз обсуждали, что запоминание десяти тысяч знаков числа Пи не дает человеку вообще ничего, кроме ЧСВ.
    Тут вопрос целеполаганий. Для математических расчетов с приемлемой точностью, достаточно помнить только до 4-5 знаков после запятой. И это В БОЛЬШИНСТВЕ СЛУЧАЕВ. Помнить 10 000 знаков просто БЕССМЫСЛЕННО для практических применений.
    И по поводу ЧСВ. Для программиста, который пишет свой или изучает чужой код, помнить некоторые предельные значения очень полезно. К ЧСВ это вряд ли относится.
    Запись от CoderHuligan размещена 07.06.2024 в 16:07 CoderHuligan вне форума
  14. Старый комментарий
    Аватар для Croessmah
    Цитата:
    Сообщение от CoderHuligan Просмотреть комментарий
    Если ничего страшного, почему математики этим не занимаются и в учебниках для малышей не рекомендуют?
    Потому что так принято. Если бы изначально 12-ричной системе считали, так бы до сих пор и делали.

    Цитата:
    Сообщение от CoderHuligan Просмотреть комментарий
    свой или изучает чужой код, помнить некоторые предельные значения очень полезно
    Честно? Не помню, чтобы мне где-то пригодилось такое знание.
    А если речь про код, то тогда надо оперировать всеми степенями двойки.
    Запись от Croessmah размещена 07.06.2024 в 16:21 Croessmah вне форума
  15. Старый комментарий
    Аватар для CoderHuligan
    Цитата:
    Потому что так принято.
    Естественно. А по иному была бы совсем другая арифметика.
    Цитата:
    Честно? Не помню, чтобы мне где-то пригодилось такое знание.
    Это не значит, что оно не пригодится когда-нибудь. При расчетах надо всегда учитывать возможное переполнение, и прикидывать, что может случиться при тех или иных входных данных. Не зная предельные значения, невозможна верификация кода.
    Запись от CoderHuligan размещена 07.06.2024 в 18:49 CoderHuligan вне форума
  16. Старый комментарий
    Аватар для Croessmah
    Цитата:
    Сообщение от CoderHuligan Просмотреть комментарий
    Не зная предельные значения, невозможна верификация кода.
    Всё возможно, нужно только проявить смекалку.

    К слову, не думаю, что Ваш способ запомнить проще, чем "стандартные" способы.
    Запись от Croessmah размещена 07.06.2024 в 21:27 Croessmah вне форума
  17. Старый комментарий
    Аватар для XLAT
    Код:
    "Глядя на то, чем порой занимаются люди, возникает мысль, что эти люди считают себя бессмертными."
    Запись от XLAT размещена 08.06.2024 в 08:45 XLAT вне форума
  18. Старый комментарий
    Аватар для CoderHuligan
    Цитата:
    Сообщение от XLAT Просмотреть комментарий
    Код:
    "Глядя на то, чем порой занимаются люди, возникает мысль, что эти люди считают себя бессмертными."

    Не по теме:

    Не пойти ли тебе в монахи?:)


    Если бы кто знал, через что иногда приходиться проходить, и на каких гранях стоять, когда либо либо.. И вот когда выходишь из этих ситуаций и возникают такие идеи, мысли, которые спасают. И это потому, что ты начинаешь мыслить по другому,отвлекаться, короче начинаешь жить заново...
    Запись от CoderHuligan размещена 08.06.2024 в 12:59 CoderHuligan вне форума
  19. Старый комментарий
    Аватар для XLAT
    Цитата:
    Сообщение от CoderHuligan Просмотреть комментарий
    Не пойти ли тебе в монахи?
    это не константы!

    так как это не константы и эти величины могут "гулять" по аппаратным платформам,
    то запоминать их это дебилизм, потому что память хьюмона есть исчерпаемый ресурс.


    ещё раз по кругу:

    обращаться к ним надо не по значениям, а по именам,
    сами значения которых хранятся в <limits.h>
    и для каждой платформы эти величины в общем случае РАЗНЫЕ!


    или вот я ни разу никогда их не запоминал,
    но легко могу их быстро нативно записать для моего контекста,
    используя шестнадцатеричную систему счисления.
    Запись от XLAT размещена 08.06.2024 в 13:09 XLAT вне форума
    Обновил(-а) XLAT 08.06.2024 в 13:33
  20. Старый комментарий
    Аватар для CoderHuligan
    Цитата:
    это не константы!
    Это ограничения для целочисленных констант. Как же не константы?
    Цитата:
    так как это не константы и эти величины могут "гулять" по аппаратным платформам,
    Вот те, что "гуляют" - это по довольно специфическим и не широко распространенным платформам. Типа контролеров. ШИРОКО распространенные процессоры INTEL , AMD и подобные, имеют вот такую архитектуру, и к корпорации майкрософт это не имеет никакого отношения. Линейка размерностей: 8/16/32/64 стала де факто НОРМОЙ в производстве ШИРОКО распространенных процессоров.
    Цитата:
    то запоминать их это дебилизм, потому что память хьюмона есть исчерпаемый ресурс.
    А таблицу умножения тоже знать не обязательно раз у нас есть калькулятор в каждом утюге?
    Запись от CoderHuligan размещена 08.06.2024 в 15:31 CoderHuligan вне форума
    Обновил(-а) CoderHuligan 08.06.2024 в 15:32
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru