Форум программистов, компьютерный форум, киберфорум
CoderHuligan
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  

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

Запись от CoderHuligan размещена 05.06.2024 в 17:36
Показов 4923 Комментарии 46

Не будем о том зачем это нужно. Это может пригодиться в самых разных случаях.
Итак, как же запомнить эти числа тем, кто не очень дружит с запоминанием чисел.
Вот эти диапазоны:
Code
1
2
3
4
5
6
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.
Вот кажется и всё на этом. Если кто выявит и другие закономерности, которые упрощают запоминание сих чисел, прошу указать это в комментариях. Спасибо за внимание!
Размещено в Без категории
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 46
Комментарии
  1. Старый комментарий
    Аватар для CoderHuligan
    обращаться к ним надо не по значениям, а по именам,
    сами значения которых хранятся в <limits.h>
    и для каждой платформы эти величины в общем случае РАЗНЫЕ!
    Вы мыслите с точки зрения программиста на си подобных языках, и не только. То есть на ЯВУ. А есть языки под конкретную архитектуру процессоров, например x86. И вот тут знать эти значения как они есть просто необходимо. Я не говорю, что обязательно их ПОМНИТЬ, но было бы не плохо.
    Запись от CoderHuligan размещена 08.06.2024 в 15:36 CoderHuligan вне форума
  2. Старый комментарий
    Аватар для XLAT
    Цитата Сообщение от CoderHuligan
    Это ограничения для целочисленных констант. Как же не константы?
    перечень архитектур с 9 битным байтом:
    Code
    1
    2
    3
    
    Digital Equipment Corporation PDP-6/10
    IBM 701/704/709/7090/7094
    UNIVAC 1103/1103A/1105/1100/2200,
    Запись от XLAT размещена 08.06.2024 в 15:44 XLAT вне форума
  3. Старый комментарий
    Аватар для CoderHuligan
    перечень архитектур с 9 битным байтом:
    Спасибо, посмеялся.
    Запись от CoderHuligan размещена 08.06.2024 в 16:27 CoderHuligan вне форума
  4. Старый комментарий
    Аватар для CoderHuligan
    Вы бы еще БЭСМ-6 вспомнили с его 48 битным словом.
    Запись от CoderHuligan размещена 08.06.2024 в 16:54 CoderHuligan вне форума
  5. Старый комментарий
    Аватар для XLAT
    Цитата Сообщение от CoderHuligan
    Спасибо, посмеялся.
    https://en.cppreference.com/w/cpp/language/types
    не слепой да увидит...

    Цитата Сообщение от CoderHuligan
    Спасибо, посмеялся.
    представьте себе, чем занимаются остальные челы вместо зубрежки волшебных чисел:
    https://www.youtube.com/@CUserGroupRussia/videos

    посмотрите хотя бы парочку, чтобы было по серьезному...
    Запись от XLAT размещена 08.06.2024 в 18:24 XLAT вне форума
  6. Старый комментарий
    Аватар для CoderHuligan
    представьте себе, чем занимаются остальные челы
    Давно подписан.
    "По крайней мере". Это об этом речь? То есть; не более чем. Так речь же идет не о наименовании базовых типов в конкретном ЯП, а базовых РАЗМЕРНОСТЯХ машинного слова и ячеек памяти, размерах регистров в процессорах ШИРОКО распространенных архитектур. Имеющий уши да услышит.
    Запись от CoderHuligan размещена 09.06.2024 в 11:30 CoderHuligan вне форума
  7. Старый комментарий
    Аватар для CoderHuligan
    А почему спрашивается был выбран (оставлен) именно размер кратный байту, т.е. 8 бит, а не 7, 9, 10 и т.д.? Вот не знаю, может кто прояснит. Скорее всего было удобно переводить двоичную систему в другую, ведь там используется степень двойки. Ок? А степень двойки как раз и есть прогрессия 2 4 8 16 32 64 ....
    То есть как бы мои оппоненты не извивались, предлагая 9 битные, 40 битные архитектуры, но есть некий фундаментальный тип размерности, который произрастает из двоичной системы счисления.
    А может быть и еще потому, что например в числе 4294967295 присутствуют 3 девятки, что есть перевернутые шестерки: 4294967295, причем стоят они на нечетных местах (по порядку).
    И в 64 битном числе 18 446 744 073 709 551 615, тоже есть эти числа..
    Запись от CoderHuligan размещена 09.06.2024 в 19:55 CoderHuligan вне форума
  8. Старый комментарий
    Аватар для CoderHuligan
    Число 4294967295 можно еще поделить на две половины, так как точно по середке стоит число 96:
    4294 96 7295
    То есть точно по середине находятся две зеркальные цифры!!!
    Значит без них получаем два четырехзначных числа:
    4294 и 7295
    Их особенность в том, что числа 94 и 95 идут по порядку (разница на единицу ):
    4294 7295
    Также видим числа 94, 95 и 96..
    А числа 42 и 72 имеют одинаковую вторую цифру 2:
    42 94 72 95
    Это очень любопытно.
    И число 4294 в начале и конце имеет одинаковую цифру 4.
    А в числе 7295, цифра 5 получается если взяв число 72 за отправное, вычесть; 7 - 2 = 5. А цифра 9 получается если сложить: 7 + 2 = 9.
    Это тоже очень замечательное обстоятельство.. Это даже не математика, а магия чисел..
    Запись от CoderHuligan размещена 10.06.2024 в 08:18 CoderHuligan вне форума
  9. Старый комментарий
    Аватар для Аватар
    а где bigint и всякие float и real? и вообще какая фигня ваша заливная рыба )) я номер мобилы своей за 15 лет не запомнил и не собираюсь запоминать, а тут.. какать я хотел на те собеседование, которых не устроит ответ, что макс для знакового инта чуть более двух миллиардов или 2^31-1 )
    Запись от Аватар размещена 10.06.2024 в 13:23 Аватар вне форума
  10. Старый комментарий
    Аватар для CoderHuligan
    Насчет рыбы: кому как.. А по поводу мобилы. Вот я раньше помнил свой номер, и мне очень это помогало. Сейчас номер поменялся, и надо бы снова запомнить.
    а где bigint и всякие float и real?
    Что касается больших чисел, то к данной теме это не имеет никакого отношения, от слова вообще. По поводу плавающей точки. Дело в том, что дробные числа можно представить при помощи целых чисел (масштабирование). Обратное не верно. При обратном преобразовании происходит потеря точности, что не есть хорошо. Вот почему целые числа это первичные числа. А всякие float могут быть представлены в разных форматах. А у целых чисел формат один единственный.
    Запись от CoderHuligan размещена 10.06.2024 в 13:53 CoderHuligan вне форума
  11. Старый комментарий
    Аватар для Usaga
    Не будем о том зачем это нужно. Это может пригодиться в самых разных случаях.
    А мне было бы интересно узнать про такие случаи. А то без мотивационной части польза статьи как будто бы неопределена...
    Запись от Usaga размещена 12.06.2024 в 09:38 Usaga на форуме
  12. Старый комментарий
    Аватар для CoderHuligan
    Цитата Сообщение от Usaga
    было бы интересно узнать про такие случаи.
    Во-первых, что-либо помнить в сфере своей проф-деятельности всегда хорошо и приветствуется.
    Во-вторых, а вдруг у вас под рукой не окажется справочника по языку. Это может понадобиться в случае непредвиденных обстоятельств. А вам нужно константу запилить, например на asm. Вот таблица умножения мне требуется почти постоянно. Я её наизусть знаю, и это помогает. Помню, слышал, что один программист наизусть помнил таблицу ascii. А другой по памяти восстановил исходный код компилятора си. Но это конечно уникумы.
    В-третьих, для быстрой оценки, а может ли тут возникнуть переполнение при определенных входных условиях. И какие эти условия должны быть.
    Запись от CoderHuligan размещена 12.06.2024 в 11:25 CoderHuligan вне форума
  13. Старый комментарий
    Цитата Сообщение от CoderHuligan
    Линейка размерностей: 8/16/32/64 стала де факто НОРМОЙ в производстве ШИРОКО распространенных процессоров.
    А ПРОГРАММНЫЕ платформы с 48-разрядными и 36-разрядными словами пока незаменимы, даже если программы выполняются на физически 64-разрядных процессорах.
    Запись от politoto размещена 13.06.2024 в 08:05 politoto вне форума
  14. Старый комментарий
    Цитата Сообщение от CoderHuligan
    Спасибо, посмеялся.
    посмейтесь ещё над 2200


    https://youtu.be/dqCIbWhGmFk
    Запись от politoto размещена 13.06.2024 в 08:21 politoto вне форума
  15. Старый комментарий
    Аватар для CoderHuligan
    пока незаменимы, даже если программы выполняются на физически 64-разрядных процессорах.
    Только путем потери эффективности, так как приходиться использовать дополнительные операции типа сдвига и т.п, чтобы подстроиться под конкретный процессор. Вы наверно имеете ввиду какие-то очень древние программы в каком-то ну очень малом сегменте индустрии.
    А я имею ввиду широко распространенные линейки процессорных архитектур. Я прекрасно знаю, что например в языке euphoria размер типа integer на пару бит меньше 32 бит и составляет от −1073741824 до 1073741823
    Но это предпочтение тех, кто пишет компиляторы. К размерам машинных слов это не имеет никакого отношения. Непонятки возникли видимо, что вы мыслите с точки зрения создателей софта.
    Запись от CoderHuligan размещена 13.06.2024 в 11:33 CoderHuligan вне форума
  16. Старый комментарий
    Цитата Сообщение от CoderHuligan
    К размерам машинных слов это не имеет никакого отношения. Непонятки возникли видимо, что вы мыслите с точки зрения создателей софта.
    С тех пор, как в середине 1960-х стали отделять программную архитектуру семейства от физических архитектур контретных моделей, создатели машин могут выбирать и менять технически и экономически удобную структуру внутренних слов, сохраняя программную совместимость.
    Запись от politoto размещена 13.06.2024 в 13:35 politoto вне форума
  17. Старый комментарий
    Пипец... Какой только фигней люди не занимаются. Ни разу еще не пригождалось помнить наизусть эти передельные значения. Можно пример, где это пригодится?
    А таблицу умножения тоже знать не обязательно раз у нас есть калькулятор в каждом утюге
    Таблица умножения - деньги, например, посчитать. Просто быстрее, чем телефон доставать и калькулятор искать. А максимальное значения лонга мне зачем помнить? Чтобы что?
    Запись от Celavesterys размещена 13.06.2024 в 16:16 Celavesterys вне форума
  18. Старый комментарий
    Чтобы знать, хватит ли лонга, чтобы посчитать население Земли?
    Запись от politoto размещена 13.06.2024 в 16:19 politoto вне форума
  19. Старый комментарий
    Чтобы знать, хватит ли лонга, чтобы посчитать население Земли?
    Но для этого достаточно прикинуть порядок и старшие цифры.
    Запись от politoto размещена 13.06.2024 в 16:20 politoto вне форума
  20. Старый комментарий
    Чтобы знать, хватит ли лонга, чтобы посчитать население Земли?
    Мне нужно для этого помнить число, достаточно представлять порядок. И сомнительно, что мне эта мысль про лонг понадобится где-то вне написания кода, где у меня уже есть все константы.
    Запись от Celavesterys размещена 13.06.2024 в 17:05 Celavesterys вне форума
 
Новые блоги и статьи
Запись в регистр сведений независимо от заполненности табличной части
Maks 25.08.2026
Реализация из решения ниже выполнена на нетиповом документе с несколькими табличными частями, разработанного в КА2. Задача: Обеспечить запись документа в регистр сведений независимо от. . .
Ноутбук Альфария
kumehtar 24.08.2026
Встретился тут в сети ноутбук Альфария, примарха Альфа-Легиона. Хотя возможно, это ноутбук Омегона, разумеется. Ну как вам?
Мастера простых решений
DevAlt 23.08.2026
В сишарп стэках winforms, да и wpf существует сложная система связывания источниках данных и элементов формы(текстовые поля и метки), опирается все это на технологию событий и мета. . .
Цена ошибки
DevAlt 23.08.2026
Человек я беспокойный и потому заинтересовался OCaml, в чате форсили функторы модулей как суперфичу. Пытаясь отдуплить концепт, наткнулся на тутор с простым примером. А главный принцип обучения от. . .
Сегодня суббота, 22.08.2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины.
zorxor 22.08.2026
Сегодня суббота, 22. 08. 2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины. Кто Я, откуда Я пришел и куда Я иду? Эти вопросы не оставляют меня ни на секунду. Жизнь на планете Земля. . .
Жизня: рисунок укладки багажа, сделанный клодом
anaschu 21.08.2026
Сделал 15 снимков, он по снимкам сделал схему.
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства. Жизнь действительно предъявляет каждому. . .
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru