12

I've noticed that Q# favors Little Endian. Meaning that most operations are designed for this type of encoding. Is is it the same with Qiskit?

Sanchayan Dutta
  • 17,945
  • 8
  • 50
  • 112
Sorin Bolos
  • 621
  • 5
  • 11

3 Answers3

16

Qiskit uses little-endian for both classical bit ordering and qubit ordering.

For classical bits:

A 3-bit classical register creg with value abc has creg[0]=c, creg[1]=b, creg[2]=a.

For qubits:

The ordering is with respect to the tensor-product structure of the state space. So a 3-qubit quantum register qreg with wave-function $|\psi\rangle = |A\otimes B\otimes C\rangle = |ABC\rangle$ has qreg[0]$= |C\rangle$, qreg[1]$= |B\rangle$, qreg[2]$= |A\rangle$.

Similarly for representing unitary matrices of a circuit. $U = U_A \otimes U_B \otimes U_C = U_A U_B U_C$ would have $U_C$ acting on qreg[0], $U_B$ acting on qreg[1] and $U_A$ acting on qreg[2].

Edit:
The link provided in the comment by Andreas Burger is outdated. Currently, the bit ordering is explained in the documentation here: https://docs.quantum.ibm.com/guides/bit-ordering

MaDude
  • 3
  • 2
cjwood
  • 1,261
  • 10
  • 10
2

Additionally, to put it for an example circuit:

enter image description here

RSW
  • 309
  • 1
  • 12
2

Note that the bits are labelled from right to left. So cr[0] is the one to the furthest right, and so on. As an example of this, here's an 8 qubit circuit with a Pauli X on only the qubit numbered 7, which has its output stored to the bit numbered 7.

https://qiskit.org/textbook/ch-appendix/qiskit.html

Jack Woehr
  • 59
  • 4