Как запомнить знаковые и беззнаковые диапазоны максимальных значений
Запись от CoderHuligan размещена 05.06.2024 в 17:36
Показов 4923
Комментарии 46
|
Не будем о том зачем это нужно. Это может пригодиться в самых разных случаях. Итак, как же запомнить эти числа тем, кто не очень дружит с запоминанием чисел. Вот эти диапазоны:
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
Комментарии
-
Запись от CoderHuligan размещена 08.06.2024 в 15:36
-
Запись от XLAT размещена 08.06.2024 в 15:44
-
Запись от CoderHuligan размещена 08.06.2024 в 16:27
-
Запись от CoderHuligan размещена 08.06.2024 в 16:54
-
https://en.cppreference.com/w/cpp/language/types
Сообщение от CoderHuligan
не слепой да увидит...
представьте себе, чем занимаются остальные челы вместо зубрежки волшебных чисел:
Сообщение от CoderHuligan
https://www.youtube.com/@CUserGroupRussia/videos
посмотрите хотя бы парочку, чтобы было по серьезному...Запись от XLAT размещена 08.06.2024 в 18:24
-
Запись от CoderHuligan размещена 09.06.2024 в 11:30
-
А почему спрашивается был выбран (оставлен) именно размер кратный байту, т.е. 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
-
Число 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
-
Запись от Аватар размещена 10.06.2024 в 13:23
-
Насчет рыбы: кому как.. А по поводу мобилы. Вот я раньше помнил свой номер, и мне очень это помогало. Сейчас номер поменялся, и надо бы снова запомнить.
Что касается больших чисел, то к данной теме это не имеет никакого отношения, от слова вообще. По поводу плавающей точки. Дело в том, что дробные числа можно представить при помощи целых чисел (масштабирование). Обратное не верно. При обратном преобразовании происходит потеря точности, что не есть хорошо. Вот почему целые числа это первичные числа. А всякие float могут быть представлены в разных форматах. А у целых чисел формат один единственный.Запись от CoderHuligan размещена 10.06.2024 в 13:53
-
Запись от Usaga размещена 12.06.2024 в 09:38
-
Во-первых, что-либо помнить в сфере своей проф-деятельности всегда хорошо и приветствуется.
Сообщение от Usaga
Во-вторых, а вдруг у вас под рукой не окажется справочника по языку. Это может понадобиться в случае непредвиденных обстоятельств. А вам нужно константу запилить, например на asm. Вот таблица умножения мне требуется почти постоянно. Я её наизусть знаю, и это помогает. Помню, слышал, что один программист наизусть помнил таблицу ascii. А другой по памяти восстановил исходный код компилятора си. Но это конечно уникумы.
В-третьих, для быстрой оценки, а может ли тут возникнуть переполнение при определенных входных условиях. И какие эти условия должны быть.Запись от CoderHuligan размещена 12.06.2024 в 11:25
-
А ПРОГРАММНЫЕ платформы с 48-разрядными и 36-разрядными словами пока незаменимы, даже если программы выполняются на физически 64-разрядных процессорах.
Сообщение от CoderHuligan
Запись от politoto размещена 13.06.2024 в 08:05
-
Запись от politoto размещена 13.06.2024 в 08:21
-
Только путем потери эффективности, так как приходиться использовать дополнительные операции типа сдвига и т.п, чтобы подстроиться под конкретный процессор. Вы наверно имеете ввиду какие-то очень древние программы в каком-то ну очень малом сегменте индустрии.
А я имею ввиду широко распространенные линейки процессорных архитектур. Я прекрасно знаю, что например в языке euphoria размер типа integer на пару бит меньше 32 бит и составляет от −1073741824 до 1073741823
Но это предпочтение тех, кто пишет компиляторы. К размерам машинных слов это не имеет никакого отношения. Непонятки возникли видимо, что вы мыслите с точки зрения создателей софта.Запись от CoderHuligan размещена 13.06.2024 в 11:33
-
С тех пор, как в середине 1960-х стали отделять программную архитектуру семейства от физических архитектур контретных моделей, создатели машин могут выбирать и менять технически и экономически удобную структуру внутренних слов, сохраняя программную совместимость.
Сообщение от CoderHuligan
Запись от politoto размещена 13.06.2024 в 13:35
-
Пипец... Какой только фигней люди не занимаются. Ни разу еще не пригождалось помнить наизусть эти передельные значения. Можно пример, где это пригодится?
Таблица умножения - деньги, например, посчитать. Просто быстрее, чем телефон доставать и калькулятор искать. А максимальное значения лонга мне зачем помнить? Чтобы что?Запись от Celavesterys размещена 13.06.2024 в 16:16
-
Чтобы знать, хватит ли лонга, чтобы посчитать население Земли?Запись от politoto размещена 13.06.2024 в 16:19
-
Чтобы знать, хватит ли лонга, чтобы посчитать население Земли?
Но для этого достаточно прикинуть порядок и старшие цифры.Запись от politoto размещена 13.06.2024 в 16:20
-
Мне нужно для этого помнить число, достаточно представлять порядок. И сомнительно, что мне эта мысль про лонг понадобится где-то вне написания кода, где у меня уже есть все константы.Запись от Celavesterys размещена 13.06.2024 в 17:05



