如何在长加法中显示进位?

如何在长加法中显示进位?

我在 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}

输出:

显示进位的二进制加法 因为每个数字都是一个节点,所以可以通过在节点之间绘制彩色箭头来增强总和的呈现效果(例如,这有助于解释二进制减法中的借位)。

相关内容