Requisitos previos:
INT_MAX e INT_MIN en C/C++ y Aplicaciones.
Desplazamiento aritmético frente a desplazamiento lógico
Suponga que tiene un sistema de 32 bits:
INT_MAX sería 01111111111111111111111111111111 e INT_MIN sería 100000000000000000000000000000000 . 0 y 1 en la posición de bit más significativa que representa el bit de signo, respectivamente.
Cálculo de INT_MAX e INT_MIN en C/C++:
El número 0 se representa como 000…000 (32 veces).
- Calculamos el NOT de 0 para obtener un número con 32 1s. Este número no es igual a INT_MAX porque el bit de signo es 1, es decir, un número negativo.
- Ahora, un desplazamiento a la derecha de este número producirá 011…111 que es INT_MAX.
- INT_MIN NO es de INT_MAX.
Nota:
0 debe tomarse como int sin signo.
Motivo:
si se firma 0, durante el Paso 2, el desplazamiento a la derecha de 111…111 producirá 111…111. Esto se debe a que el desplazamiento aritmético a la derecha conserva el signo del número.
En Java, tenemos disponible la función de desplazamiento lógico a la derecha.
C++
// CPP code to compute INT_MAX and INT_MIN using // bitwise operations #include <bits/stdc++.h> using namespace std; void printMinMaxValues() { // 0 saved as unsigned int unsigned int max = 0; // Computing NOT of 0 max = ~max; // 1 time arithmetic right shift max = max >> 1; // Computing INT_MIN int min = max; // INT_MIN = ~INT_MAX min = ~min; // Printing the result cout << "INT_MAX : " << max << " INT_MIN : " << min; } // Driver code int main() { printMinMaxValues(); return 0; }
Java
// Java code to compute INT_MAX and INT_MIN using // bitwise operations public class Solution { static void printMinMaxValues() { int max = 0; // Computing NOT of 0 max = ~max; // 1 time logical right shift for INT_MAX max = max >>> 1; // Computing INT_MIN int min = max; // INT_MIN = ~INT_MAX min = ~max; // Printing the result System.out.println("INT_MAX " + max + " INT_MIN " + min); } public static void main(String[] args) { printMinMaxValues(); } }
Python3
# Python3 code to compute INT_MAX and INT_MIN using # bitwise operations def printMinMaxValues(): # 0 saved as unsigned int max = 0 # Computing NOT of 0 #to signed integer to unsigned integer #in Python3, add 1 << 32 to the integer max = ~max + (1 << 32) # 1 time arithmetic right shift max = max >> 1 # Computing INT_MIN min = max; # INT_MIN = ~INT_MAX min = ~min # Printing the result print("INT_MAX :", max, "INT_MIN :", min) # Driver code printMinMaxValues() # This code is contributed by phasing17
C#
// C# code to compute INT_MAX and INT_MIN using // bitwise operations using System; public class GFG { static void printMinMaxValues() { // 0 saved as unsigned int uint max = 0; // Computing NOT of 0 max = ~max; // 1 time arithmetic right shift max = max >> 1; // Computing INT_MIN int min = (int)max; // INT_MIN = ~INT_MAX min = ~min; // Printing the result Console.WriteLine("INT_MAX " + max + " INT_MIN " + min); } //Driver code public static void Main(string[] args) { //Function call printMinMaxValues(); } } //This code is contributed by phasing17
Javascript
<script> // Javascript code to compute INT_MAX and INT_MIN using // bitwise operations function printMinMaxValues() { let max = 0; // Computing NOT of 0 max = ~max; // 1 time logical right shift for INT_MAX max = max >>> 1; // Computing INT_MIN let min = max; // INT_MIN = ~INT_MAX min = ~max; // Printing the result document.write("INT_MAX - " + max + ", INT_MIN " + min); } // driver program printMinMaxValues(); // This code is contributed by code_hunt. </script>
Producción:
INT_MAX 2147483647 INT_MIN -2147483648
Complejidad del tiempo – O(1)
Complejidad espacial – O(1)
Preguntado en: Google
Este artículo es una contribución de Rohit Thapliyal . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA