Classical Registers in OpenQASM

Just as qubits are the building blocks of quantum computing, classical bits are the foundation of classical computing. OpenQASM provides the capability to group bits into classical registers, which is particularly useful when you are working with measurements from quantum operations. This chapter will teach you how to create and work with classical registers in OpenQASM.

Understanding Classical Registers

A classical register is akin to an array in classical programming, but it is designed to hold bits, which represent the binary states 0 or 1.

In OpenQASM, a classical register is declared with the creg keyword, an identifier, and the number of bits as the size:

creg <identifier>[<size>];

The identifier should comply with OpenQASM's naming standards, and the size must be a positive integer.

Experiment: Creating and Utilizing a Classical Register

Let's explore an experiment where we create a classical register to record the outcome of quantum measurements123456:


OPENQASM 2.0; // Specify OpenQASM version [^1] include ""; // Include the standard quantum library [^2] // Quantum register with a single qubit and classical register with two bits qreg qubit[1]; // Single-qubit quantum register [^4] creg bits[2]; // Two-bit classical register [^3] // Prepare qubit in a superposition state h qubit[0]; // Apply Hadamard gate to the qubit [^5] // Measure the qubit and store the result in the first bit of classical register measure qubit[0] -> bits[0]; // Measurement operation [^6] // The second bit remains in its initial state (0)


Powered by Perceval, Qiskit, PyZX

Not run yet


Not run yet

In this combined experiment, a quantum register holds a single qubit that we prepare in a superposition state using a Hadamard gate. We then measure the qubit's state and store the measurement result in the first bit of our two-bit classical register. The second bit of the register is unmodified and showcases the ability to store multiple measurement outcomes or to utilize extra bits for other classical computations.

Single-Bit Classical Registers

While OpenQASM doesn't allow the declaration of isolated classical bits, you can declare a one-bit register for scenarios needing only one bit:

// One-bit classical register declaration
creg flag[1]; // Single-bit register named 'flag' [^3]

In summary, classical registers in OpenQASM are indispensable for obtaining and preserving the results of quantum measurements, enabling the further processing needed in quantum algorithms.


  1. Version String Documentation

  2. Include Documentation

  3. Classical Registers Documentation

  4. Quantum Registers Documentation

  5. Hadamard Gate Documentation

  6. Measurement Documentation


Copyright © 2024 Walther Group, Faculty of Physics, University of Vienna. All rights reserved.