Quortup Quortup Launch Free
Step-by-Step Quantum Tutorial

How to Build a Bell State Using a Quantum Circuit Simulator

Learn how to construct a two-qubit Bell State (|Φ⁺⟩) using Hadamard and CNOT gates with real-time statevector tracking and measurement simulations.

Introduction: What is a Bell State?

A Bell State is a maximally entangled quantum state of two qubits. In classical physics, two coins flipped independently each have a 50% chance of heads or tails. In a Bell State, however, measuring one qubit instantly reveals the outcome of the other, regardless of spatial distance.

There are four canonical Bell states. In this tutorial, we construct the most famous Bell state: |Φ⁺⟩ = (|00⟩ + |11⟩) / √2.

1

Step 1: Initialization

We start with two qubits initialized in the standard ground state: |ψ₀⟩ = |00⟩.

2

Step 2: Create Superposition

Apply a Hadamard gate (H) to qubit 0. This puts qubit 0 into an equal superposition: (|0⟩ + |1⟩) / √2 while qubit 1 remains in |0⟩.

3

Step 3: Entanglement via CNOT

Apply a Controlled-NOT (CNOT) gate using qubit 0 as control and qubit 1 as target. This flips qubit 1 if and only if qubit 0 is |1⟩, creating the entangled state.

Mathematical Evolution of the Circuit Dirac Notation
Step 0 (Initial):
|ψ₀⟩ = |0⟩ ⊗ |0⟩ = |00⟩

Step 1 (After H on q0):
|ψ₁⟩ = (H ⊗ I)|00⟩ = ((|0⟩ + |1⟩)/√2) ⊗ |0⟩ = (|00⟩ + |10⟩)/√2

Step 2 (After CNOT with control q0, target q1):
|ψ₂⟩ = CNOT((|00⟩ + |10⟩)/√2) = (|00⟩ + |11⟩)/√2 = |Φ⁺⟩

Measurement Probabilities:
P(|00⟩) = |1/√2|² = 1/2 = 50.0%
P(|01⟩) = 0.0%
P(|10⟩) = 0.0%
P(|11⟩) = |1/√2|² = 1/2 = 50.0%
        

Qiskit Implementation

Here is the exact code to reproduce this circuit in Python using Qiskit 1.0+:

from qiskit import QuantumCircuit
from qiskit_aer import AerSimulator

# 1. Create a circuit with 2 quantum qubits and 2 classical bits
qc = QuantumCircuit(2, 2)

# 2. Apply Hadamard to q0
qc.h(0)

# 3. Entangle q0 and q1 with CNOT
qc.cx(0, 1)

# 4. Measure both qubits
qc.measure([0, 1], [0, 1])

# 5. Simulate 1000 shots
simulator = AerSimulator()
result = simulator.run(qc, shots=1000).result()
counts = result.get_counts()
print("Measurement counts:", counts)
# Expected Output: ~500 shots '00' and ~500 shots '11'
        

Frequently Asked Questions

Why are measurement outcomes only |00⟩ and |11⟩?

Because the CNOT gate entangles the target qubit with the control qubit. When qubit 0 is measured as 0, the state collapses to |00⟩. When qubit 0 is measured as 1, the state collapses to |11⟩. The states |01⟩ and |10⟩ have an amplitude of zero.

Ready to Build Quantum Circuits in Your Browser?

Join students, researchers, and quantum developers exploring visual simulation, Bloch spheres, and AI assisted synthesis with Quortup.

Launch Simulator Free — Zero Setup