Académique Documents
Professionnel Documents
Culture Documents
Complemento a uno *.
<< Desplazamiento a izquierda .
>> Desplazamiento a derecha .
&
AND; compara dos bits *.
^
XOR (OR exclusivo); compara dos bits *.
|
OR inclusivo; compara dos bits *.
El primero es un operador unario, los restantes son binarios. Los tres
primeros realizan manipulaciones en los bits del operando. Los restantes
realizan comparaciones lgicas entre los bits de ambos operandos, similares
a las que realizan los operadores lgicos entre objetos booleanos.
Para comprobar las relaciones anteriores, utilizamos una versin modificada del programa anterior:
#include <iostream.h>
short signed cero = 0, dos = 2, mdos = -2;
int main (void) {
cout << "0 >> 1 == " << (cero >> 1) << endl;
cout << "2 >> 1 == " << (dos >> 1) << endl;
cout << "-2 >> 1 == " << (mdos >> 1) << endl;
}
Salida:
0 >> 1 == 0
2 >> 1 == 1
-2 >> 1 == -1
#include <iostream.h>
int main()
{
int entero;
char letra, letra2, letra3, letra4, opcion='s';
do
{
cout<<"dame una letra cualquiera: ";
cin>>letra;
if ( ! (letra >= 'a' && letra <= 'z') && ! (letra >= 'A' && letra <= 'Z') )
{
cout <<"caracter invalido"<<endl;
continue; //si no est entre (a...z) o entre (A...Z) reinicia el ciclo
}
//se probar nicamente el bit de las minsculas
if( letra & 0x20 ) cout <<"es minuscula"<<endl; // 0x20 hex = 00100000 bin
else cout <<"es mayuscula"<<endl;
//se invertir el bit de las minsculas
letra ^= 0x20;
cout <<"la letra invertida es: "<<letra<<endl<<endl;
cout <<"dame 2 letras minusculas y 2 letras mayusculas en cualquier orden"<<endl;
cin >> letra >> letra2 >> letra3 >> letra4;
letra |= 0x20; //convertir a minsculas
letra2 |= 0x20;
letra3 |= 0x20;
letra4 |= 0x20;
cout <<"convertidas a minusculas: "<< letra << letra2 << letra3 << letra4<<endl<<endl;
letra &= 0xDF; //convertir a maysculas
letra2 &= 0xDF;
letra3 &= 0xDF;
letra4 &= ~0x20; // tambien se pueden usar los complementos
cout <<"convertidas a mayusculas: "<< letra << letra2 << letra3 << letra4<<endl<<endl;
//convertir obtener el ASCII de un nmero
cout <<"dame un dgito (0-9): ";
cin >> letra;
entero = letra;
//comprobar el bit de paridad
cout <<endl<<"paridad: ";
(entero & 1)?cout<<"impar":cout<<"par";
cout <<endl;
cout <<"el codigo ASCII del digito " << letra << " es " <<entero<<endl;
//convertir caracter a nmero
entero &= 0x0F;
cout <<"caracter ingresado " << letra << " valor " <<entero<<endl;
// repetir ciclo
cout <<"repetir ciclo (S/N): ";
cin >> opcion;
}while(opcion=='s' ||opcion =='S');
cout << endl;
return 0;
}