Mi informacion de contacto
Correo[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Normalmente, una variable de tipo int ocupa 4 bytes, 1 byte tiene 8 bits y cada bit tiene dos estados: 0 y 1. Por lo tanto, la variable de tipo int puede representar un total de 2 ^ 32 estados (es decir, puede representar 2 ^8 valor de datos).
Comienza a las 07:36
mayor comprensión
preguntar: De los dos videos anteriores, podemos saber que el rango de enteros positivos que se pueden representar mediante el tipo int es 1 ~ 2^31 - 1. Si comparamos esta lógica con los enteros negativos, entonces el rango de enteros que se puede representar por el tipo int no debería ser -2^31 + 1 ~ 2^31 -1? Dado que no se puede obtener el valor 2^31, ¿por qué se puede obtener -2^31?
respuesta:En informática, la representación de enteros con signo más utilizada esrepresentación en complemento a dos . Este método no solo resuelve el problema de representar números positivos y negativos, sino que también simplifica las operaciones binarias de suma y resta. Echemos un vistazo a esta representación en detalle:
1. un numero positivo : La representación binaria de números positivos es la misma que la de los números sin signo. Por ejemplo, la representación binaria de 3 dígitos de 3 es 011.
2. numero negativo : La representación de números negativos se logra mediante el complemento de números positivos. El complemento a dos de un número negativo se calcula invirtiendo la representación binaria del valor absoluto del número y sumando 1. Por ejemplo:
① Negación: primero invierta la representación binaria de 3, 011 en 100.
② Suma 1: Suma 1 a 100 para obtener 101, por lo que la representación en complemento a dos de -3 es 101.
Para una variable entera de 32 bits, su bit más alto (también llamado bit de signo) representa el signo, 0 representa positivo y 1 representa negativo. Los 31 bits restantes se utilizan para representar valores numéricos.A continuación, volvamos a la pregunta que acabamos de plantear:
1. Rango positivo (incluido 0) : El bit de signo es 0 y los 31 bits restantes pueden representar valores desde 000…000 (31 0) hasta 011…111 (31 1). El rango decimal correspondiente es de 0 a 2^31 - 1.
2. rango negativo : El bit de signo es 1 y los 31 bits restantes pueden representar valores de 100...000 (31 0) a 111...111 (31 1). Entre ellos, el número en complemento a dos de 100...000 (31 ceros) representa -2^31, y el valor decimal correspondiente es -2^31. El número en complemento a dos de 111...111 (31 unidades) representa -1 y el valor decimal correspondiente es -1.
Rango de números positivos: 1 ~ 2^31 - 1; rango de números negativos: -1 ~ -2^31, el número total sigue siendo 2^32 estados diferentes. Por lo tanto, normalmente el rango de valores de un entero de tipo int es -2147483648 ~ 2147483647 (es decir, -2^31 ~ 2^31 - 1)
¿Cuántos bytes ocupa int de 64 bits? ¿La diferencia entre los tipos de enteros int, long y long long?
¿Cuántos bytes ocupa el int de 64 bits? [Entrevista] ¿Cuántos bytes ocupa el int?
La diferencia entre máquinas de 32 y 64 bits y la cantidad de bytes ocupados por los tipos de datos básicos
Tipo entero en lenguaje C (incluido el rango de valores y la longitud)
¿Cuántos bytes ocupa el tipo int?
Tamaño de datos de tipo int y tipo de puntero en diferentes plataformas
Problema de tamaño de Java ()
Las variables de tipo int en Python pueden almacenar números enteros de cualquier tamaño
Resumir:
- El tamaño del tipo de datos de C y C++ se ve afectado por el estándar de compilación, el compilador, el bitness del sistema operativo, etc.
- El tamaño del tipo de datos de Java y Python está determinado por la especificación del lenguaje o la implementación del intérprete y no se ve afectado por factores como el compilador y el bitness del sistema operativo.
- La razón principal de esta diferencia de diseño es que C y C++ son lenguajes de programación de sistemas que generalmente necesitan interactuar directamente con el hardware, por lo que el tamaño de los tipos de datos variará según el entorno subyacente, mientras que Java y Python son de alto nivel; Lenguajes de programación de nivel superior con un mayor nivel de abstracción. El objetivo del diseño es la coherencia entre plataformas.
Recomendado nuevamente
Tercera parte: El origen del problema