Skip to content

Commit

Permalink
Added a few bit-manipulation snippets in C
Browse files Browse the repository at this point in the history
  • Loading branch information
aelshinawy committed Jan 22, 2025
1 parent d2c7e92 commit e7e8fc2
Show file tree
Hide file tree
Showing 7 changed files with 133 additions and 0 deletions.
17 changes: 17 additions & 0 deletions snippets/c/bit-manipulation/clear-ith-bit.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
---
title: Clear ith bit
description: Clear the ith bit of a number and returns the resulting number
tags: bit-manipulation, number, clear
author: aelshinawy
---

```c
int clear_ith_bit(int n, int i) {
return n & ~(1 << i);
}


// Usage:
clear_ith_bit(10, 1); // Returns: 8
clear_ith_bit(10, 3); // Returns: 2
```
23 changes: 23 additions & 0 deletions snippets/c/bit-manipulation/count-set-bits.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
---
title: Count Set Bits
description: Counts the number of set bits in an int
tags: bit-manipulation, count
author: aelshinawy
---

```c
int count_set_bits(int n) {
int count = 0;
while (n) {
n &= (n - 1);
count++;
}
return count;
}


// Usage:
count_set_bits(5); // Returns: 2
count_set_bits(255); // Returns: 8
count_set_bits(8); // Returns: 1
```
19 changes: 19 additions & 0 deletions snippets/c/bit-manipulation/get-ith-bit.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
---
title: Get ith bit
description: Get the i-th bit of a number
tags: bit-manipulation, number, get
author: aelshinawy
---

```c
int get_ith_bit(int n, int i) {
return (n >> i) & 1;
}


// Usage:
count_set_bits(10, 0); // Returns: 0
count_set_bits(10, 1); // Returns: 1
count_set_bits(10, 2); // Returns: 0
count_set_bits(10, 3); // Returns: 1
```
17 changes: 17 additions & 0 deletions snippets/c/bit-manipulation/is-odd.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
---
title: Is Odd
description: Check if a number is odd
tags: bit-manipulation, number, is-odd
author: aelshinawy
---

```c
bool is_odd(int n) {
return n & 1;
}


// Usage:
is_odd(10); // Returns: false
is_odd(11); // Returns: true
```
19 changes: 19 additions & 0 deletions snippets/c/bit-manipulation/set-ith-bit.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
---
title: Set ith bit
description: Set the i-th bit of a number and returns the resulting number
tags: bit-manipulation, number, set
author: aelshinawy
---

```c
int set_ith_bit(int n, int i) {
return n | (1 << i);
}


// Usage:
set_ith_bit(10, 0); // Returns: 11
set_ith_bit(10, 2); // Returns: 14
set_ith_bit(1, 8); // Returns: 257
set_ith_bit(1, 3); // Returns: 9
```
20 changes: 20 additions & 0 deletions snippets/c/bit-manipulation/swap-numbers.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
---
title: Swap Numbers
description: Swap two numbers without a temporary variable
tags: bit-manipulation, number, swap
author: aelshinawy
---

```c
void swap(int *a, int *b) {
*a ^= *b;
*b ^= *a;
*a ^= *b;
}


// Usage:
int x = 5, y = 10;
swap(&x, &y);
printf("x = %d, y = %d\n", x, y); // x = 10, y = 5
```
18 changes: 18 additions & 0 deletions snippets/c/bit-manipulation/toggle-ith-bit.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
---
title: Toggle ith bit
description: Toggle the i-th bit of a number and returns the resulting number
tags: bit-manipulation, number, toggle
author: aelshinawy
---

```c
int toggle_ith_bit(int n, int i) {
return n ^ (1 << i);
}


// Usage:
toggle_ith_bit(10, 0); // Returns: 11
toggle_ith_bit(10, 1); // Returns: 8
toggle_ith_bit(8, 1); // Returns: 10
```

0 comments on commit e7e8fc2

Please sign in to comment.