Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Snippets] Added a few bit-manipulation snippets in C #242

Merged
merged 1 commit into from
Jan 26, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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:
get_ith_bit(10, 0); // Returns: 0
get_ith_bit(10, 1); // Returns: 1
get_ith_bit(10, 2); // Returns: 0
get_ith_bit(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
```
Loading