Python prend en charge l'arithmétique de précision arbitraire, mais pas C++.
En outre, conformément à la norme [expr.shift]:
Le comportement est indéfini si l'opérande droit est négatif, ou plus ou égale à la longueur en bits de la promotion gauche opérande.
Pour utiliser les grands entiers en C++ vous pouvez utiliser la bibliothèque Boost, qui fournit des emballages à différentes bibliothèques avec de longues implémentations arithmétiques:
#include <boost/multiprecision/gmp.hpp>
#include <iostream>
int main()
{
boost::multiprecision::mpz_int one(1);
std::cout << (one << 180) << std::endl;
return 0;
}
Prints
1532495540865888858358347027150309183618739122183602176
C++ n'a pas de type natif d'une longueur de 180 bits. Le plus grand est "long long", qui est habituellement de seulement 64 bits. Si vous avez besoin d'une arithmétique de précision arbitraire, utilisez une bibliothèque "bignum" comme [GMP] (https://gmplib.org/). Pour une bibliothèque C++, regardez [Boost multiprecision] (http://www.boost.org/doc/libs/1_60_0/libs/multiprecision/doc/html/index.html). –
Peut-être une refonte du code pour savoir pourquoi vous avez besoin de stocker de tels grands nombres/modèles de bits –