Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Checking, Setting, and Clearing Bits | Bit Masks and Flags
C Bitwise Operations and Binary Logic

bookChecking, Setting, and Clearing Bits

To manipulate individual bits in a value, you use bitwise operations in combination with bit masks. A bit mask is an integer where one or more bits are set to 1 at positions you want to affect, and 0s elsewhere. Three fundamental actions—checking, setting, and clearing a specific bit—are performed using the bitwise AND (&), OR (|), and NOT (~) operators together with a mask.

To check if a bit at position n is set (1), you create a mask with only that bit set: 1 << n. Applying bitwise AND between your value and the mask will result in a nonzero value if the bit is set, or zero if it is clear.

To set a bit at position n, you use bitwise OR with a mask that has a 1 at the desired position. This ensures the target bit becomes 1, while all other bits stay the same.

To clear a bit at position n, you use bitwise AND with the bitwise NOT of the mask. This turns the target bit to 0, leaving other bits unchanged.

These techniques allow you to manipulate bits precisely and efficiently.

main.c

main.c

copy
1234567891011121314151617181920212223242526
#include <stdio.h> int main() { unsigned int value = 0b10101010; // 170 in decimal int n = 3; // Target the 4th bit (counting from 0) // Create a mask for the nth bit unsigned int mask = 1 << n; // Check if the nth bit is set if (value & mask) { printf("Bit %d is set in %u.\n", n, value); } else { printf("Bit %d is NOT set in %u.\n", n, value); } // Set the nth bit unsigned int set_value = value | mask; printf("After setting bit %d: %u (0b%08b)\n", n, set_value, set_value); // Clear the nth bit unsigned int clear_value = value & (~mask); printf("After clearing bit %d: %u (0b%08b)\n", n, clear_value, clear_value); return 0; }

These bitwise techniques are vital in many real-world programming situations. In hardware control, you often interact with registers where each bit represents a switch, status flag, or control signal—changing or checking a single bit can turn a device on or off. In network protocol parsing, individual bits within bytes may indicate message types, error states, or permissions. Working with file permissions, graphic color channels, or compact data structures also relies on checking, setting, or clearing specific bits without disturbing others. Mastering these operations is essential for efficient, low-level programming and for interfacing with systems where every bit counts.

question mark

Which C expression correctly checks if the bit at position n in value is set?

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 3. Kapitel 2

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

bookChecking, Setting, and Clearing Bits

Swipe um das Menü anzuzeigen

To manipulate individual bits in a value, you use bitwise operations in combination with bit masks. A bit mask is an integer where one or more bits are set to 1 at positions you want to affect, and 0s elsewhere. Three fundamental actions—checking, setting, and clearing a specific bit—are performed using the bitwise AND (&), OR (|), and NOT (~) operators together with a mask.

To check if a bit at position n is set (1), you create a mask with only that bit set: 1 << n. Applying bitwise AND between your value and the mask will result in a nonzero value if the bit is set, or zero if it is clear.

To set a bit at position n, you use bitwise OR with a mask that has a 1 at the desired position. This ensures the target bit becomes 1, while all other bits stay the same.

To clear a bit at position n, you use bitwise AND with the bitwise NOT of the mask. This turns the target bit to 0, leaving other bits unchanged.

These techniques allow you to manipulate bits precisely and efficiently.

main.c

main.c

copy
1234567891011121314151617181920212223242526
#include <stdio.h> int main() { unsigned int value = 0b10101010; // 170 in decimal int n = 3; // Target the 4th bit (counting from 0) // Create a mask for the nth bit unsigned int mask = 1 << n; // Check if the nth bit is set if (value & mask) { printf("Bit %d is set in %u.\n", n, value); } else { printf("Bit %d is NOT set in %u.\n", n, value); } // Set the nth bit unsigned int set_value = value | mask; printf("After setting bit %d: %u (0b%08b)\n", n, set_value, set_value); // Clear the nth bit unsigned int clear_value = value & (~mask); printf("After clearing bit %d: %u (0b%08b)\n", n, clear_value, clear_value); return 0; }

These bitwise techniques are vital in many real-world programming situations. In hardware control, you often interact with registers where each bit represents a switch, status flag, or control signal—changing or checking a single bit can turn a device on or off. In network protocol parsing, individual bits within bytes may indicate message types, error states, or permissions. Working with file permissions, graphic color channels, or compact data structures also relies on checking, setting, or clearing specific bits without disturbing others. Mastering these operations is essential for efficient, low-level programming and for interfacing with systems where every bit counts.

question mark

Which C expression correctly checks if the bit at position n in value is set?

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 3. Kapitel 2
some-alt