No entiendo por qué esto me da la misma respuesta:desplazamientos de bit en C++
long long a = 3265917058 >> 24;
std::cout << a << std::endl; //194
long long ip = 3265917058;
long long b = ip >> 24;
std::cout << b << std::endl; //194
pero esto no:
long long a = (3265917058 << 16) >> 24;
std::cout << a << std::endl; //240
long long ip = 3265917058;
long long b = (ip << 16) >> 24;
std::cout << b << std::endl; //12757488 - **i want this to be 240 too!**
Actualización: Quiero desplazamiento de 32 bits, pero ¿cómo puede ¿Cambio 32bit un número que es demasiado grande para una variable int? Update2: Mi respuesta es hacer unsigned int ip. Entonces todo estará bien.
pero ¿cómo obtengo la respuesta 240 si utilizo la variable? No puedo almacenar 3265917058 en un int. – Stals
@Stals: su constante todavía se ajusta en 32 bits; solo se trata módulo 2^32 - la representación de bit es la misma. Un compilador decente debería advertirte sobre esto, ¿tienes advertencias habilitadas? –
activado, pero sin advertencias. – Stals