Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Escrito por Mateus Costa
- 15/03/2017
- */
- #include <stdio.h>
- #include <stdlib.h>
- // 1 bit
- // Aguenta até 32 slots (0 - 31)
- // Valores inteiros suportados: 0 e 1
- void setBit1(int *pInt32, int index, int valor)
- {
- *pInt32 = (*pInt32 & ~(0x1 << index)) ^ (valor << index);
- }
- int getBit1(int pInt32, int index)
- {
- return ((pInt32 >> index) & 0x1);
- }
- // 2 bits
- // Aguenta até 16 slots (0 - 15)
- // Valor inteiro máximo suportado: 3
- void setBit2(int *pInt32, int index, int valor)
- {
- *pInt32 = (*pInt32 & ~(0x3 << index * 2)) ^ (valor << (index * 2));
- }
- int getBit2(int pInt32, int index)
- {
- return ((pInt32 >> (index * 2)) & 0x3);
- }
- // 4 bits
- // Aguenta até 8 slots (0 - 7)
- // Valor inteiro máximo suportado: 15
- void setBit4(int *pInt32, int index, int valor)
- {
- *pInt32 = (*pInt32 & ~(0xf << index * 4)) ^ (valor << (index * 4));
- }
- int getBit4(int pInt32, int index)
- {
- return ((pInt32 >> (index * 4)) & 0xf);
- }
- // 8 bits
- // Aguenta até 4 slots (0 - 3)
- // Valor inteiro máximo suportado: 255
- void setBit8(int *pInt32, int index, int valor)
- {
- *pInt32 = (*pInt32 & ~(0xff << index * 8)) ^ (valor << (index * 8));
- }
- int getBit8(int pInt32, int index)
- {
- return ((pInt32 >> (index * 8)) & 0xff);
- }
- int main()
- {
- // Exemplos
- int var = 0;
- setBit4(&var, 0, 14);
- setBit4(&var, 1, 8);
- setBit4(&var, 7, 15);
- printf("%d\n", getBit4(var, 0)); // imprime 14
- printf("%d\n", getBit4(var, 1)); // imprime 8
- printf("%d\n", getBit4(var, 7)); // imprime 15
- setBit4(&var, 0, 9);
- setBit4(&var, 1, 11);
- setBit4(&var, 7, 0);
- printf("%d\n", getBit4(var, 0)); // imprime 9
- printf("%d\n", getBit4(var, 1)); // imprime 11
- printf("%d\n", getBit4(var, 7)); // imprime 0
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement