1. Set nth bit of integer x
x | (1<<n)
Example
#include<stdio.h>
int main()
{
int x = 10; //1010
int n = 2;
int result = x | (1<<n); //1110
printf("%d\n", result); //14
return 0;
}
2. Unset nth bit of integer x
x & ~(1<<n)
Example
#include<stdio.h>
int main()
{
int x = 10; //1010
int n = 1;
int result = x & ~(1<<n); //1000
printf("%d", result2); //8
return 0;
}
3. Toggle nth bit of x
x ^ (1<<n)
Example
#include<stdio.h>
int main()
{
int x = 10; //1010
int n = 0;
int result = x ^ (1<<n); //1011
n = 3;
result = result ^ (1<<n); //0011
printf("%d\n", result); //3
return 0;
}
4. Multiply integer x by the nth power of 2
x << n
Example
#include<stdio.h>
int main()
{
int x = 10;
int n = 3;
int result = x << n; // 10 * (2^3)
printf("%d\n", result); //80
return 0;
}
5. Divide integer x by the nth power of 2
x >> n;
Example
#include<stdio.h>
int main()
{
int x = 80;
int n = 3;
int result = x >> n; // 80 / (2^3)
printf("%d\n", result); //10
return 0;
}
6. Check equality of two integer
(num1 ^ num2) == 0; // num1 == num2
Example
#include<stdio.h>
int main()
{
int num1 = 10;
int num2 = 10;
if ((num1 ^ num2) == 0)
printf("Equal");
else
printf("Not Equal");
return 0;
}
7. Check if an integer number is odd
(num & 1) == 1
Example
#include<stdio.h>
int main()
{
int num = 13;
if ((num & 1) == 1)
printf("Odd");
else
printf("Even");
return 0;
}
8. Swap two integer values
//version 1
a ^= b;
b ^= a;
a ^= b;
//version 2
a = a ^ b ^ (b = a)
Example
#include<stdio.h>
int main()
{
int a = 5;
int b = 7;
//Version 1
a ^= b;
b ^= a;
a ^= b;
printf("a = %d & b = %d\n", a, b); // a = 7 & b = 5
//Version 2
a = a ^ b ^ (b = a);
printf("a = %d & b = %d", a, b); // a = 5 & b = 7
return 0;
}
9. Get the max of two integer values
b & ((a-b) >> 31) | a & (~(a-b) >> 31);
Example
#include<stdio.h>
int main()
{
int a = 5;
int b = 7;
int max = b & ((a-b) >> 31) | a & (~(a-b) >> 31);
printf("%d", max);
return 0;
}
10. Get the min of two integer values
a & ((a-b) >> 31) | b & (~(a-b) >> 31);
Example
#include<stdio.h>
int main()
{
int a = 5;
int b = 7;
int min = a & ((a-b) >> 31) | b & (~(a-b) >> 31);
printf("%d", min);
return 0;
}
11. Check whether both integer numbers have the same sign
(num1 ^ num2) >= 0;
Example
#include<stdio.h>
int main()
{
int num1 = 5;
int num2 = -7;
if ((num1 ^ num2) >= 0)
printf("Same Sign");
else
printf("Different Sign");
return 0;
}
12. Flip the sign of an integer number
num = ~num + 1;
Example
#include<stdio.h>
int main()
{
int num = 5;
num = ~num + 1;
printf("num = %d", num);
return 0;
}
13. Check whether a integer number is power of 2
num > 0 && (num & (num - 1)) == 0;
Example
#include<stdio.h>
int main()
{
int num = 16;
if (num > 0 && (num & (num - 1)) == 0)
printf("Number is power of 2");
else
printf("Number is not power of 2");
return 0;
}
14. Increment by 1 (num + 1)
-~num
Example
#include<stdio.h>
int main()
{
int num = 16;
num = -~num;
printf("num = %d", num);
return 0;
}
15. Decrement by 1 (num - 1)
~-num
Example
#include<stdio.h>
int main()
{
int num = 16;
num = ~-num;
printf("num = %d", num);
return 0;
}