Bit Manipulation Basics AND OR XOR NOT Left Right Shift
📖 Scenario: Imagine you are working with a simple device that stores settings as bits in a number. Each bit can be ON (1) or OFF (0). You want to learn how to change these bits using basic bit operations.
🎯 Goal: You will create a program that uses bit manipulation operations: AND, OR, XOR, NOT, left shift, and right shift on given numbers. You will see how these operations change the bits step-by-step.
📋 What You'll Learn
Create two variables with exact values
Create a variable for a shift amount
Use bitwise AND, OR, XOR, NOT, left shift, and right shift operations
Print the results of each operation
💡 Why This Matters
🌍 Real World
Bit manipulation is used in low-level programming, device control, and performance optimization where direct control of bits is needed.
💼 Career
Understanding bitwise operations is important for embedded systems, network programming, cryptography, and systems programming roles.
Progress0 / 4 steps
1
Create two integer variables
Create two integer variables called a and b with values 12 and 5 respectively.
DSA Go
Hint
Use := to create variables a and b with the exact values.
2
Create a shift amount variable
Create an integer variable called shift and set it to 2.
DSA Go
Hint
Use shift := 2 to create the variable.
3
Apply bitwise operations
Create variables andResult, orResult, xorResult, notResult, leftShiftResult, and rightShiftResult to store the results of a & b, a | b, a ^ b, ^a, a << shift, and a >> shift respectively.
DSA Go
Hint
Use the operators &, |, ^, ^ (NOT), <<, and >> with the variables.
4
Print the results
Print the values of andResult, orResult, xorResult, notResult, leftShiftResult, and rightShiftResult each on a new line using fmt.Println.
DSA Go
Hint
Use fmt.Println to print each variable on its own line.
Practice
(1/5)
1. What is the result of the bitwise AND operation between 6 and 3? (6 = 110 in binary, 3 = 011 in binary)
easy
A. 2
B. 1
C. 3
D. 0
Solution
Step 1: Convert numbers to binary
6 in binary is 110, 3 in binary is 011.
Step 2: Perform bitwise AND
110 AND 011 = 010 in binary, which is 2 in decimal.
Final Answer:
2 -> Option A
Quick Check:
6 & 3 = 2 [OK]
Hint: AND keeps bits set in both numbers only [OK]
Common Mistakes:
Confusing AND with OR operation
Not converting numbers to binary before operation
Mixing decimal and binary values
2. Which of the following is the correct syntax in Go to perform a bitwise XOR between variables a and b?
easy
A. c := a & b
B. c := a && b
C. c := a ^ b
D. c := a | b
Solution
Step 1: Recall Go bitwise operators
In Go, '^' is the bitwise XOR operator.
Step 2: Match syntax
c := a ^ b uses '^' correctly for XOR. Other options use logical AND (&&), OR (|), and AND (&).
Final Answer:
c := a ^ b -> Option C
Quick Check:
Bitwise XOR uses '^' in Go [OK]
Hint: XOR operator in Go is '^' symbol [OK]
Common Mistakes:
Using '&&' which is logical AND, not bitwise
Confusing OR '|' with XOR '^'
Using '&' which is bitwise AND, not XOR
3. What is the output of the following Go code?
package main
import "fmt"
func main() {
var x uint8 = 12 // binary 00001100
var y uint8 = 5 // binary 00000101
fmt.Println(x | y)
fmt.Println(x & y)
fmt.Println(x ^ y)
}
Hint: OR sets bits from either number, AND only common bits [OK]
Common Mistakes:
Mixing up OR and XOR results
Incorrect binary conversion
Confusing decimal output values
4. The following Go code is intended to left shift the number 3 by 2 bits. Identify the error.
package main
import "fmt"
func main() {
var a int = 3
var b int = 2
var c int = a << b
fmt.Println(c)
}
medium
A. Error: shift count must be unsigned integer
B. No error, output is 12
C. Error: cannot shift int by int
D. Error: missing parentheses around shift
Solution
Step 1: Understand Go shift rules
In Go, shift count must be unsigned integer or untyped constant. Here, b is int but allowed.
Step 2: Calculate left shift
3 << 2 means shifting bits of 3 (00000011) left by 2 bits: 00001100 = 12 decimal.
Final Answer:
No error, output is 12 -> Option B
Quick Check:
3 << 2 = 12 [OK]
Hint: Shift count can be int variable in Go if within range [OK]
Common Mistakes:
Assuming shift count must be uint explicitly
Thinking parentheses are required around shift
Confusing shift operators with arithmetic operators
5. Given a 8-bit unsigned integer n, write a Go expression using bitwise operators to toggle (flip) the 3rd bit (counting from 0, right to left) of n. Which expression correctly does this?
hard
A. n ^ (1 << 3)
B. n & (1 << 3)
C. n | (1 << 3)
D. ~n & (1 << 3)
Solution
Step 1: Understand toggling a bit
Toggling means flipping the bit: if 0 becomes 1, if 1 becomes 0.
Step 2: Use XOR to toggle
XOR with 1 flips the bit, XOR with 0 keeps it same. So, n ^ (1 << 3) flips the 3rd bit.
Step 3: Check other options
AND keeps bit only if both are 1 (no toggle), OR sets bit to 1 (no toggle), NOT and AND combination does not toggle.
Final Answer:
n ^ (1 << 3) -> Option A
Quick Check:
XOR with mask toggles bit [OK]
Hint: XOR with 1 flips bit, XOR with 0 keeps bit same [OK]
Common Mistakes:
Using AND or OR which don't toggle bits
Confusing NOT operator usage
Incorrect bit position shift
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.