我在 LaTeX 中进行二进制加法,但我不知道如何在我的计算结果上方显示进位数字。(即 1 + 1 = 0,进位 1,等等。)
下面是我的不带进位的加法的一个简单例子:
$\begin{array}[t]{r}
1100\ 1001 \\
+ \ 1111\ 1111 \\ \hline
1100\ 1000
\end{array}$ \
我怎样才能在顶行上方显示我的进位数字(以较小的字体)?
答案1
不要$ … $
对大数组使用内联数学 ()。我会使用显示数学 ( \[ … \]
)。如果您使用 amsmath 包(这是必需的\overset
,并且始终是一个好主意),equation*
则可以使用未编号环境。
参考
\carry
宏
如果未使用可选参数,则宏将用或\carry[<num>]
覆盖以下组。<num>
1
B
列类型
我还借助array
包裹,它会自动重复正确数量的r
列并插入适当的水平空间(可以通用更改)。如果需要九列以上,则必须按数字分组:B{12}
。
代码
\documentclass{article}
\usepackage{array,mathtools}
\newcommand*{\carry}[1][1]{\overset{#1}}
\newcolumntype{B}[1]{r*{#1}{@{\,}r}}
\begin{document}
\begin{equation*}
\begin{array}{B3}
\carry 0 & \carry 1\carry 1\carry 0\carry 0 & \carry 1\carry 0\carry 01 \\
{} + 0 & 1111 & 1111 \\ \hline
1 & 1100 & 1000 \\
\end{array}
\end{equation*}
\begin{equation*}
\begin{array}{@{}B2}
\carry 2\carry 5 & \carry 4\carry[2] 68 \\
24 & 389 \\
{} + 31 & 436 \\ \hline
81 & 293 \\
\end{array}
\end{equation*}
\end{document}
输出
答案2
每年我都会教授一门关于计算机体系结构的入门课程,并且我总是以十进制算术的回顾开始课程,以展示基数表示和算术的一般原理。
我也想用二进制加法表示进位,但我的解决方案使用了 Tikz 数学节点矩阵。下面的一个简单示例展示了我的解决方案。
\documentclass{article}
\usepackage{lmodern}
\renewcommand*\familydefault{\sfdefault}
\usepackage{amsmath}
\usepackage{tikz}
\usetikzlibrary{matrix}
\newcommand{\addend}{\text{\textsl{\color{gray}{Addend}}}}
\newcommand{\augend}{\text{\textsl{\color{gray}{Augend}}}}
\newcommand{\sumOut}{\text{\textsl{\color{gray}{Sum}}}}
\begin{document}
Calculate the binary sum $0001\;0011\;1101+0000\;1011\;0111$.
\begin{equation}
\begin{tikzpicture}[
row 1/.style={font=\textsl,font=\scriptsize,black!85, anchor=west,
inner sep=1.5pt},
every node/.style={column sep=.5mm,row sep=1mm}]
\matrix (m) [matrix of math nodes,
nodes in empty cells,
%nodes=draw
]
{
& & & & & & 1 & 1 & 1 & 1 & 1 & 1 & & \\
& 0 & 0 & 0 & 1 & 0 & 0 & 1 & 1 & 1 & 1 & 0 & 1 &[10mm] \addend \\
+ & 0 & 0 & 0 & 0 & 1 & 0 & 1 & 1 & 0 & 1 & 1 & 1 & \augend \\
& 0 & 0 & 0 & 1 & 1 & 1 & 1 & 1 & 0 & 1 & 0 & 0 & \sumOut \\
};
\draw[-,color=black,semithick] (m-3-2.south west) -- (m-3-13.south east);
\end{tikzpicture}
\label{binary_integer_addition}
\end{equation}
\end{document}
输出:
因为每个数字都是一个节点,所以可以通过在节点之间绘制彩色箭头来增强总和的呈现效果(例如,这有助于解释二进制减法中的借位)。