Langkau ke kandungan utama

Susunan bit dalam Qiskit SDK

Versi pakej

Kod dalam halaman ini dibangunkan menggunakan keperluan berikut. Kami mengesyorkan penggunaan versi ini atau yang lebih baharu.

qiskit[all]~=2.3.0

Jika anda mempunyai set nn bit (atau qubit), anda biasanya akan melabel setiap bit 0β†’nβˆ’10 \rightarrow n-1. Perisian dan sumber yang berbeza perlu memilih cara susunan bit ini dalam memori komputer dan semasa dipaparkan pada skrin.

Konvensyen Qiskit​

Berikut ialah cara Qiskit SDK menyusun bit dalam senario berbeza.

Circuit Quantum​

Kelas QuantumCircuit menyimpan qubitnya dalam senarai (QuantumCircuit.qubits). Indeks sesebuah qubit dalam senarai ini menentukan label qubit tersebut.

# Added by doQumentation β€” required packages for this notebook
!pip install -q qiskit
from qiskit import QuantumCircuit, QuantumRegister
from qiskit.circuit import Qubit

qc = QuantumCircuit(2)
qc.qubits[0] # qubit "0"

Qubit(QuantumRegister(2, "q"), 0)
<Qubit register=(2, "q"), index=0>

Gambar rajah Circuit​

Dalam gambar rajah Circuit, qubit 00 ialah qubit paling atas, dan qubit nβˆ’1n-1 ialah qubit paling bawah. Anda boleh mengubah ini dengan argumen reverse_bits pada QuantumCircuit.draw (lihat Ubah susunan dalam Qiskit).

qc.x(1)
qc.draw()
q_0: ─────
β”Œβ”€β”€β”€β”
q_1: ─ X β”œ
β””β”€β”€β”€β”˜

Integer​

Apabila mentafsir bit sebagai nombor, bit 00 ialah bit paling tidak bererti, dan bit nβˆ’1n-1 adalah yang paling bererti. Ini memudahkan pengekodan kerana setiap bit mempunyai nilai 2label2^\text{label} (label ialah indeks qubit dalam QuantumCircuit.qubits). Sebagai contoh, pelaksanaan Circuit berikut berakhir dengan bit 00 bernilai 0, dan bit 11 bernilai 1. Ini ditafsirkan sebagai integer perpuluhan 2 (diukur dengan kebarangkalian 1.0).

from qiskit.primitives import StatevectorSampler as Sampler

qc.measure_all()

job = Sampler().run([qc])
result = job.result()
print(f" > Counts: {result[0].data.meas.get_counts()}")
> Counts: {'10': 1024}

Rentetan​

Apabila memaparkan atau mentafsir senarai bit (atau qubit) sebagai rentetan, bit nβˆ’1n-1 ialah bit paling kiri, dan bit 00 ialah bit paling kanan. Ini kerana kita biasanya menulis nombor dengan digit paling bererti di sebelah kiri, dan dalam Qiskit, bit nβˆ’1n-1 ditafsirkan sebagai bit paling bererti.

Sebagai contoh, sel berikut mentakrifkan Statevector daripada rentetan keadaan qubit tunggal. Dalam kes ini, qubit 00 berada dalam keadaan ∣+⟩|+\rangle, dan qubit 11 dalam keadaan ∣0⟩|0\rangle.

from qiskit.quantum_info import Statevector

sv = Statevector.from_label("0+")
sv.probabilities_dict()
{np.str_('00'): np.float64(0.4999999999999999),
np.str_('01'): np.float64(0.4999999999999999)}

Ini kadangkala menimbulkan kekeliruan semasa mentafsir rentetan bit, kerana anda mungkin menjangka bit paling kiri sebagai bit 00, sedangkan ia biasanya mewakili bit nβˆ’1n-1.

Matriks Statevector​

Apabila mewakili statevector sebagai senarai nombor kompleks (amplitud), Qiskit menyusun amplitud ini supaya amplitud pada indeks xx mewakili keadaan asas pengkomputeran ∣x⟩|x\rangle.

print(sv[1])  # amplitude of state |01>
print(sv[2]) # amplitude of state |10>
(0.7071067811865475+0j)
0j

Gate​

Setiap Gate dalam Qiskit boleh mentafsir senarai qubit mengikut caranya tersendiri, tetapi Gate berkawal biasanya mengikuti konvensyen (kawalan, sasaran).

Sebagai contoh, sel berikut menambah Gate X berkawal di mana qubit 00 ialah kawalan dan qubit 11 ialah sasaran.

from qiskit import QuantumCircuit

qc = QuantumCircuit(2)
qc.cx(0, 1)
qc.draw()
q_0: ──■──
β”Œβ”€β”΄β”€β”
q_1: ─ X β”œ
β””β”€β”€β”€β”˜

Mengikuti semua konvensyen Qiskit yang disebutkan sebelum ini, Gate CX ini melakukan transformasi ∣01βŸ©β†”βˆ£11⟩|01\rangle \leftrightarrow |11\rangle, jadi mempunyai matriks berikut.

(1000000100100100)\begin{pmatrix} 1 & 0 & 0 & 0 \\ 0 & 0 & 0 & 1 \\ 0 & 0 & 1 & 0 \\ 0 & 1 & 0 & 0 \\ \end{pmatrix}

Ubah susunan dalam Qiskit​

Untuk melukis Circuit dengan qubit dalam susunan terbalik (iaitu, qubit 00 di bawah), gunakan argumen reverse_bits. Ini hanya mempengaruhi gambar rajah yang dijana dan tidak mempengaruhi Circuit; Gate X masih bertindak pada qubit 00.

from qiskit import QuantumCircuit

qc = QuantumCircuit(2)
qc.x(0)
qc.draw(reverse_bits=True)
q_1: ─────
β”Œβ”€β”€β”€β”
q_0: ─ X β”œ
β””β”€β”€β”€β”˜

Anda boleh menggunakan kaedah reverse_bits untuk mengembalikan Circuit baharu dengan label qubit yang diterbalikkan (ini tidak mengubah Circuit asal).

qc.reverse_bits().draw()
q_0: ─────
β”Œβ”€β”€β”€β”
q_1: ─ X β”œ
β””β”€β”€β”€β”˜

Perhatikan bahawa dalam Circuit baharu ini, Gate X bertindak pada qubit 11.

Langkah seterusnya​

Cadangan
Source: IBM Quantum docs β€” updated 16 Mac 2026
English version on doQumentation β€” updated 7 Mei 2026
This translation based on the English version of 11 Mac 2026