Open In App

Setting Bits in C

Last Updated : 16 Oct, 2024
Comments
Improve
Suggest changes
Like Article
Like
Report

In C programming, setting a bit is the process of setting a specific bit of a binary number to 1. This operation is crucial in various applications, including memory management, data processing, and hardware control.

In this article, we will learn how to set a bit at a given position in a binary number. We will also explore how to set multiple bits simultaneously.

How to Set a Bit in C?

Setting a bit means setting its value to 1. In C, we can set a given bit using the OR operator (|) combined with a bit mask. Below is the truth table of OR:

Truth-Table-for-OR-Operation

From the above table, we can infer that:

  • By ORing a bit with 1, the given bit is set to 1.
  • By ORing a bit with 0, the given bit remains unchanged.

Setting a Specific Bit in C

To set a specific bit in a number, you can use a bit mask with the OR operator. In that bitmask number, only the bit you want to set is set to 1, and all other bits are set to 0.

Example:

Input: binary_number: 01100111
bit to set: 5th
Output: binary_number: 01100111
mask_used: 00100000

C
// C Program to Set a given bit of a binary number
#include <stdio.h>

int main()
{
    // Binary: 01100111
    unsigned int num = 103;

    // Setting the 5th bit (0-based index)
    unsigned int bit_position = 5;

    // Create a mask with only the 5th bit set to 1
    unsigned int mask = 1 << bit_position;

    // Set the bit using OR
    num = num | mask;

    // Print the result
    printf("Result: %u\n", num);

    return 0;
}

Output
Result: 103

Time Complexity: O(1)
Space Complexity: O(1)

Setting Multiple Bits in C

We can also set multiple bits by creating a mask with multiple bits set to 1. ORing the number with this mask will set all corresponding bits.

Example: Setting the 1st, 3rd, and 4th Bits

We can use the left shift operator to create a mask, but remember the 0-based indexing in the shifting.

C
// C Program to Set multiple bits of a binary number
#include <stdio.h>

int main()
{
    // Binary: 01100111
    unsigned int num = 103;

    // Create a mask with the 1st, 3rd, and 4th bits set to
    // 1
    unsigned int mask = (1 << 0) | (1 << 2) | (1 << 3);

    // Set the bits using OR
    num = num | mask;

    // Print the result
    printf("Result: %u\n", num);

    return 0;
}

Output
Result: 111

Time Complexity: O(n), where n is the number of bits to be set.
Space Complexity: O(1)


Next Article

Similar Reads