Baixe o app para aproveitar ainda mais
Prévia do material em texto
Prof. Edson J. R. Justino Prof. Claudio Carvilhe Parte 5 Pontifícia Universidade Católica do Paraná - PUCPR Operadores Lógicos em Binário ou Operadores Unários � Seus operadores não são tratados como verdadeiro e falso, mas sim como bytes onde as operações são feitas em nível de seus bits. Operadores Lógicos em Binário � a) & (E) � a = 0x23F 00000010 00111111 � b = 0xF3AC 11110011 10101100 � c = a & b 00000010 00101100 (0x022C) � b) | (OU) � c = a | b 11110011 10111111 (0xF3BF) � c) ~ ( Complemento) Operadores Lógicos em Binário � O operador unário ~ completa o seu operando, ou seja, transforma todos os bits 0 em bits 1 e vice-versa #include <stdio.h> #include <stdlib.h> int a = 0x23f, b = 0xf3ac, c, d, f ; int main( ) { c = a & b; d = a | b ; f = ~a ; printf("a=%d\nb=%d\nc = %x\nd = %x\nf = %x\n",a, b, c , d, f ); system("PAUSE"); return 0; } Operadores de Deslocamento de Bits � Desloca os bits para a esquerda ou para a direita (inclusão de zeros) � >> ( direita ) � << (esquerda) � Ex.: unsigned int a = 7; 00000111 a=a<<1; /* a=14 */ 00001110 a=a<<3; /* a=112 */ 01110000 a=a>>2; /* a=12 */ 00011100 Operadores de Deslocamento de Bits � O deslocamento permite a multiplicação e a divisão do número por potência de 2. � a = a * 16 a = a << 4 (16 = 2**4) � a = a / 4 a = a >> 2 (4 = 2**2) #include <stdio.h> #include <stdlib.h> int a = 0x00ff; // a = 255 int main( ) { printf("Hexa a = %x Dec a = %d\n",a,a); a <<= 2; /* ou a = a << 2 */ printf("Hexa a = %x Dec a = %d\n",a,a); a = a >> 2; printf("Hexa a = %x Dec a = %d\n",a,a); system("PAUSE"); return 0; } Operadores Condicionais a = 2; b = 3; z = (a > b ) ? a : b; ou a = 2; b = 3; if ( a > b ) z = a; else z = b; #include <stdio.h> #include <stdlib.h> #define ABS (a > 0 ) ? a : ( -a ) int a; int main( ) { a = -4; printf(“a = %d\n”,a); a = ABS; printf( “a = %d\n”,a); system("PAUSE"); return 0; }
Compartilhar