Какое максимальное значение для int32? - PullRequest
1380 голосов
/ 18 сентября 2008

Я никогда не могу вспомнить номер. Мне нужно правило памяти.

Ответы [ 50 ]

16 голосов
/ 05 сентября 2014

Если вам случится знать, что ваш ASCII-стол выключен наизусть, а не MaxInt:
!GH6G = 21 47 48 36 47

16 голосов
/ 26 февраля 2015

Лучшее правило для запоминания это:
21 (магическое число!)
47 (просто запомните это)
48 (последовательно!)
36 (21 + 15, обе магии!)
47 снова

Также проще запомнить 5 пар, чем 10 цифр.

15 голосов
/ 18 сентября 2008

Предполагая .NET -

Console.WriteLine(Int32.MaxValue);
15 голосов
/ 01 июня 2010

Интересно, что Int32.MaxValue содержит больше символов, чем 2 147 486 647.

Но опять же, у нас есть завершение кода,

Так что, я думаю, все, что нам действительно нужно запомнить - это Int3<period>M<enter>, то есть всего 6 символов для ввода в visual studio.

UPDATE По какой-то причине я был понижен. Единственная причина, по которой я могу придумать, заключается в том, что они не поняли мое первое утверждение.

«Int32.MaxValue» занимает не более 14 символов для ввода. 2,147,486,647 требует 10 или 13 символов для ввода в зависимости от того, введены вы запятые или нет.

14 голосов
/ 03 марта 2009

Самый простой способ запомнить это посмотреть на std::numeric_limits< int >::max()

Например ( из MSDN ),

// numeric_limits_max.cpp

#include <iostream>
#include <limits>

using namespace std;

int main() {
   cout << "The maximum value for type float is:  "
        << numeric_limits<float>::max( )
        << endl;
   cout << "The maximum value for type double is:  "
        << numeric_limits<double>::max( )
        << endl;
   cout << "The maximum value for type int is:  "
        << numeric_limits<int>::max( )
        << endl;
   cout << "The maximum value for type short int is:  "
        << numeric_limits<short int>::max( )
        << endl;
}
11 голосов
/ 18 сентября 2008

Просто помните, что 2 ^ (10 * x) - это приблизительно 10 ^ (3 * x) - вы, вероятно, уже привыкли к этому с килобайтами / кибибайтами и т. Д. То есть:

2^10 = 1024                ~= one thousand
2^20 = 1024^2 = 1048576    ~= one million
2^30 = 1024^3 = 1073741824 ~= one billion

Поскольку int использует 31 бит (+ ~ 1 бит для знака), просто удвойте 2 ^ 30, чтобы получить приблизительно 2 миллиарда. Для беззнакового int, использующего 32 бита, снова удваивается для 4 миллиардов. Коэффициент ошибок тем больше, чем больше вы идете, конечно, но вам не нужно запоминать точное значение (если вам это нужно, вы все равно должны использовать предопределенную константу для него). Приблизительное значение достаточно для того, чтобы заметить, когда что-то может быть опасно близко к переполнению.

10 голосов
/ 05 августа 2015

вот как я это запомнил 2,147,483,647

В дальнюю четверть саванны Оптимус трио заговорил сорок семь лет

2 - To
1 - A
4 - Far
7 - Savannah
4 - Quarter
8 - Optimus
3 - Trio
6 - Hexed
4 - Forty
7 - Septenary
7 голосов
/ 03 марта 2009

Что ты имеешь в виду? Должно быть достаточно легко запомнить, что это 2 ^ 32. Если вы хотите, чтобы правило запоминало значение этого числа, удобное эмпирическое правило предназначено для преобразования двоичного и десятичного в общем случае:

2 ^ 10 ~ 1000

что означает 2 ^ 20 ~ 1 000 000

и 2 ^ 30 ~ 1 000 000 000

Удвоить это (2 ^ 31) примерно на 2 миллиарда, и еще раз удвоить (2 ^ 32) - 4 миллиарда.

Это простой способ получить приблизительную оценку любого двоичного числа. 10 нулей в двоичном виде становятся 3 нулями в десятичном.

7 голосов
/ 08 июня 2017

Как физик, я бы округлил до 2 миллиарда (полушутка). Легко запомнить!

6 голосов
/ 04 декабря 2013

В Objective-C (iOS и OSX) просто запомните эти макросы:

#define INT8_MAX         127
#define INT16_MAX        32767
#define INT32_MAX        2147483647
#define INT64_MAX        9223372036854775807LL

#define UINT8_MAX         255
#define UINT16_MAX        65535
#define UINT32_MAX        4294967295U
#define UINT64_MAX        18446744073709551615ULL
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...