Facebook
From Calebe, 3 Years ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 69
  1. #include <stdio.h>
  2.  
  3. int main()
  4. {
  5.     //0b... siginifica o inicio de um numero binario
  6.    
  7.     //Obs: essa operacao transforma o primeiro valor utilizado no int em sizeof(int) - 1
  8.    
  9.     int chave;
  10.     int Index = 5; //0b101
  11.     char c = 'a'; //0b1100001
  12.     int mask = 0b11111111;
  13.     int char_recuperado;
  14.    
  15.     chave = Index; // 0b...000 00000101
  16.    
  17.     printf("A variavel chave contem o valor de: %d\n", chave); //5
  18.    
  19.     chave = chave << 8;  // 0b...101 00000000 // 8 bits shiftados pra esquerda
  20.    
  21.     printf("chave contem o valor de: %d apos o shift de 8 bits\n", chave); //1280
  22.    
  23.     chave += c; // 0b...101 01100001  // char colocado nas posicoes shiftadas do int
  24.    
  25.    
  26.     printf("chave contem o valor de: %d apos a soma com o valor do char\n", chave); //1377
  27.    
  28.     char_recuperado = chave & mask; //operacao de AND nos bits das duas variaveis que devolve os 8 primeiros bits com o resto 0
  29.                                     // 0b...000 01100001
  30.    
  31.     printf("o valor do char recuperado é: %d que é transformado no char: %c\n", char_recuperado, char_recuperado); //97 ou 'a'
  32.    
  33.     chave = chave >> 8; // faz o shift de 8 bits para direita que retorna o valor 0b ...000 00000101
  34.    
  35.     printf("o valor da chave apos a volta do shift de 8 bits: %d", chave); //5
  36.  
  37.     return 0;
  38. }
  39.