Форум программистов, компьютерный форум, киберфорум
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.
Вот кажется и всё на этом. Если кто выявит и другие закономерности, которые упрощают запоминание сих чисел, прошу указать это в комментариях. Спасибо за внимание!
Размещено в Без категории
Показов 3422 Комментарии 46
Всего комментариев 46
Комментарии
  1. Старый комментарий
    Аватар для Croessmah
    Цитата:
    Сообщение от CoderHuligan Просмотреть комментарий
    Константы в коде - пожалуйста пишите в hex.
    Цитата:
    Сообщение от CoderHuligan Просмотреть комментарий
    А вам нужно константу запилить, например на asm.
    Хм... где-то здесь противоречие, кажется...
    Запись от Croessmah размещена 13.06.2024 в 18:57 Croessmah вне форума
  2. Старый комментарий
    Аватар для Croessmah
    Вообще, получается такая ситуация:
    У нас есть код.
    У нас есть ПК.
    У нас есть компилятор.
    У нас нет калькулятора.
    Запись от Croessmah размещена 13.06.2024 в 18:59 Croessmah вне форума
  3. Старый комментарий
    Продолжим изучать закономерности

    https://oeis.org/A001146/b001146.txt

    Кликните здесь для просмотра всего текста
    0 2
    1 4
    2 16
    3 256
    4 65536
    5 4294967296
    6 18446744073709551616
    7 340282366920938463463374607431768211456
    8 115792089237316195423570985008687907853269984665640564039457584007913129639936
    9 13407807929942597099574024998205846127479365820592393377723561443721764030073546 976801874298166903427690031858186486050853753882811946569946433649006084096
    10 17976931348623159077293051907890247336179769789423065727343008115773267580550096 31327084773224075360211201138798713933576587897688144166224928474306394741243777 67893424865485276302219601246094119453082952085005768838150682342462881473913110 540827237163350510684586298239947245938479716304835356329624224137216
    11 32317006071311007300714876688669951960444102669715484032130345427524655138867890 89319720141152291346368871796092189801949411955915049092109508815238644828312063 08773673009960917501977503896521067960576383840675682767922186426197561618380943 38476170470581645852036305042887575891541065808607552399123930385521914333389668 34242068497478656456949485617603532632205807780565933102619270846031415025859286 41771167259436037184618573575983511523016459044036976132332872312271256847108202 09725157101726931323469678542580656697935045997268352998638215525166389437335543 602135433229604645318478604952148193555853611059596230656
    12 10443888814131525066917527107166243825799642490473837803842334832839539079715574 56848826811934997558340890106714439262837987573438185793607263236087851365277945 95697654370999834036159013438371831442807001185594622637631883939771274567233468 43445866174968079087058037040712840487401186091144679777835980290066869389768817 87785946905630190260940599579453432823469303026696443059025015972399867714215541 69383555988529148631823791443449673408781187263949647510018904134900841706167509 36683338505510329720882695507699836163694119330152137968258371880918336567512213 18492846368125550225998300412344784862595674492194617023806505913245610825731835 38008760862210283427019769820231316901767800667519548507992163641937028537512478 40149071591354599827905133996115517942711068311340905842728842797915548497829543 23534517065223269061394905987693002122963395687782878948440616007412945674919823 05057164237715481632138063104590291613692670834285644073044789997190178146576347 32238502672530598997959960907994692017746248177184498674556592501783290704731194 33165550807568221846571746373296884912819520317457002440926616910874148385078411 92980452298185733897764810312608590300130241346718972667321649151113160292078173 8033436090243804708340403154190336
    13 ...

    Python
    1
    
    print( *[ str(2**(2**i)) for i in range(13) ], sep='\n')
    Запись от politoto размещена 14.06.2024 в 07:34 politoto вне форума
  4. Старый комментарий
    Аватар для CoderHuligan
    Цитата:
    Продолжим изучать закономерности
    Строго говоря это просто степени двойки, а целое предельное число равное размеру регистра-аккумулятора (например) всегда на 1 меньше. На до 128 битных процессоров для ширпотреба еще ой как далеко, так что не надо утрировать.
    Запись от CoderHuligan размещена 14.06.2024 в 17:39 CoderHuligan вне форума
  5. Старый комментарий
    Ширпотребные процессоры не во всём 64-битные:

    Bash
    1
    
    grep bit /proc/cpuinfo
    address sizes : 36 bits physical, 48 bits virtual
    Для архитектурного семейства и конкретных моделей значимы и другие степени 2.
    Запись от politoto размещена 18.06.2024 в 13:40 politoto вне форума
  6. Старый комментарий
    Аватар для AlexProgramm
    Погружение в числа, закономерности, прям как в "Играх разума"
    Запись от AlexProgramm размещена 21.06.2024 в 14:27 AlexProgramm вне форума
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru