# 单比特门 · X、H、Z 与它们的矩阵

> 量子门就是作用在状态向量上的幺正矩阵。这一章讲透最常用的单比特门——X（非门）、Z（相位翻转）、H（叠加）——给出矩阵、用代码施加并打印状态验证，并点破一个重要性质：所有量子门都可逆。

- 作者：David（道雾轩）
- 专栏：写给程序员的量子计算（https://daiw.org/manual/quantum-computing.md）
- 最后更新：2026-07-14
- 原文：https://daiw.org/manual/quantum-computing/single-gates
- 转载与引用：请注明出处并附原文链接（https://daiw.org/about/copyright）

# 单比特门 · X、H、Z 与它们的矩阵

qubit 的状态是个向量；那**操作** qubit，自然就是**用矩阵去乘这个向量**。这就是**量子门(quantum gate)** 的全部真相：

$$
\ket{\psi_{\text{新}}} = U \ket{\psi_{\text{旧}}}
$$

一个单比特门，就是一个 $2\times 2$ 的矩阵 $U$。这一章认识最常用的三个，每个都**给矩阵、施加、打印状态验证**——看着结果学。

## X 门：量子版的 NOT

`X` 门交换 $\ket{0}$ 和 $\ket{1}$，就是经典的「非门」：

$$
X = \begin{bmatrix} 0 & 1 \\ 1 & 0 \end{bmatrix}, \qquad X\ket{0} = \begin{bmatrix} 0 & 1 \\ 1 & 0 \end{bmatrix}\begin{bmatrix} 1 \\ 0 \end{bmatrix} = \begin{bmatrix} 0 \\ 1 \end{bmatrix} = \ket{1}
$$

代码验证——施加 X，打印状态，果然从 $\ket{0}$ 变成了 $\ket{1}$：

```python
from qiskit import QuantumCircuit
from qiskit.quantum_info import Statevector

qc = QuantumCircuit(1)
qc.x(0)
print(Statevector(qc))
# Statevector([0.+0.j, 1.+0.j], dims=(2,))   → [0, 1] = |1⟩
```

## Z 门：翻转相位

`Z` 门保持 $\ket{0}$ 不动，但给 $\ket{1}$ 乘上一个负号：

$$
Z = \begin{bmatrix} 1 & 0 \\ 0 & -1 \end{bmatrix}, \qquad Z\ket{0} = \ket{0}, \quad Z\ket{1} = -\ket{1}
$$

<Callout type="warn">
  **Z 门作用在 $\ket{0}$ 上「什么都没变」，作用在 $\ket{1}$ 上只是加个负号——测量概率完全不变($|-1|^2 = 1$)。那它有什么用？** 用处大了。那个负号是**相位(phase)**，它在**叠加态**里才显威力：$Z\ket{+} = \frac{1}{\sqrt{2}}(\ket{0} - \ket{1}) = \ket{-}$——把 $\ket{+}$ 变成了 $\ket{-}$。两者测量分布一样（都是五五开），但它们是**不同的状态**，在后续的**干涉**中表现天差地别。**相位是量子计算的暗物质：看不见（单独测不出来），却主宰全局。** 下一章你就会见识它的威力。
</Callout>

## H 门：制造叠加

`H`(Hadamard)门是量子计算的主力，它把确定态变成叠加态：

$$
H = \frac{1}{\sqrt{2}}\begin{bmatrix} 1 & 1 \\ 1 & -1 \end{bmatrix}, \qquad H\ket{0} = \ket{+}, \quad H\ket{1} = \ket{-}
$$

注意 $H\ket{1} = \ket{-} = \frac{1}{\sqrt{2}}(\ket{0} - \ket{1})$——那个**负号**又出现了（来自矩阵右下角的 $-1$）。$\ket{+}$ 和 $\ket{-}$ 测量分布相同，但相位相反，这个区别下一章是主角。

## 看看门的矩阵

不确定某个门是什么矩阵？用 `Operator` 直接打印出来：

```python
from qiskit.quantum_info import Operator

qc = QuantumCircuit(1)
qc.h(0)
print(Operator(qc).data)
# [[ 0.707+0.j  0.707+0.j]
#  [ 0.707+0.j -0.707+0.j]]     → 正是 H 矩阵
```

这在[调试](https://daiw.org/manual/quantum-computing/debugging) 时很有用：把你搭的一段线路整体看成一个矩阵，和预期对比。

## 常用单比特门速查

| 门 | 作用 | 矩阵 | Qiskit |
| --- | --- | --- | --- |
| `X` | 翻转 $\ket{0}\leftrightarrow\ket{1}$(NOT) | $\begin{bmatrix}0&1\\1&0\end{bmatrix}$ | `qc.x(0)` |
| `Y` | 翻转 + 相位 | $\begin{bmatrix}0&-i\\i&0\end{bmatrix}$ | `qc.y(0)` |
| `Z` | 给 $\ket{1}$ 加负号 | $\begin{bmatrix}1&0\\0&-1\end{bmatrix}$ | `qc.z(0)` |
| `H` | 制造叠加 | $\frac{1}{\sqrt{2}}\begin{bmatrix}1&1\\1&-1\end{bmatrix}$ | `qc.h(0)` |
| `S` | 加 90° 相位 | $\begin{bmatrix}1&0\\0&i\end{bmatrix}$ | `qc.s(0)` |
| `T` | 加 45° 相位 | $\begin{bmatrix}1&0\\0&e^{i\pi/4}\end{bmatrix}$ | `qc.t(0)` |

$X, Y, Z$ 合称**泡利门(Pauli gates)**。从 Bloch 球看，它们都是让球**绕某个轴转 180°**；$H$ 是绕一条斜轴转；$S$、$T$ 是绕 Z 轴转小角度。**「量子门 = 旋转 Bloch 球」是个好用的直觉。**

## 一个关键性质：量子门都可逆

经典逻辑门很多是**不可逆**的：AND 门输出 0，你没法反推输入是 `00`、`01` 还是 `10`——信息丢了。但量子门**全都可逆**：

<Callout type="info">
  **每个量子门 $U$ 都是幺正矩阵(unitary)，满足 $U^\dagger U = I$——这意味着它一定有逆操作 $U^\dagger$，能把状态精确地变回去。** 物理上，这是量子演化的基本要求（不能凭空丢信息）。工程上，它有个实用推论：**任何一段量子线路，都能「倒着跑」回到初始态**——把每个门换成它的逆、顺序反过来即可。比如 $X$ 的逆是它自己($XX=I$)，$H$ 的逆也是自己（$HH=I$，下一章会亲手验证），$S$ 的逆是 $S^\dagger$。这个「可逆」性质在算法设计里到处都是（比如「算完再解开」的 uncompute 技巧）。
</Callout>

## 小结与下一章

量子门就是作用在状态向量上的幺正矩阵：$X$ 是 NOT，$Z$ 翻相位，$H$ 造叠加；我们用 `Statevector` 和 `Operator` 把作用和矩阵都打印出来验证了。记住两点：**相位（那个负号）单独测不出、却主宰干涉**；**所有门都可逆**($U^\dagger U = I$)。

那个反复出现的「负号 / 相位」，到底怎么变出量子计算的威力？下一章我们做个惊人的实验：**连按两次 H 门，结果不是「随机的随机」，而是确定地回到 0**——这背后就是干涉。👉 [叠加与干涉：两次 H 门为什么不是「更随机」](https://daiw.org/manual/quantum-computing/superposition)。

## 参考文献

- [1] Qiskit 官方文档.「Standard gates / Operator.」https://docs.quantum.ibm.com/api/qiskit/circuit_library —— 各门定义与矩阵。
- [2] Nielsen & Chuang.《Quantum Computation and Quantum Information》， §1.3， §4.2 —— 单比特门与幺正演化。
- [3] IBM Quantum.「Single-qubit gates & the Bloch sphere.」https://learning.quantum.ibm.com —— 门作为 Bloch 球旋转。
