Full Adder

A full adder is a basic combinational circuit that performs the addition of two -bit binary numbers along with a carry input , and produces an -bit sum along with a carry output . It may be composed of 1-bit full adders connected in series, where each 1-bit full adder handles a single bit of the input numbers and the carry from the previous bit addition:

\begin{document}
\begin{tikzpicture}
  \begin{scope}
      % Draw the full adder block
      \draw (0,0) node[draw, minimum width=3cm, minimum height=3cm] (adder) {1-bit adder};
      
      % Input labels and arrows
      \draw [<-] (-0.5, 1.5) -- (-0.5,2) node[above] {$A_0$};
      \draw [<-] (0.5, 1.5) -- (0.5,2) node[above] {$B_0$};
      \draw [<-] ++(adder.east) -- ++(0.5, 0) node[right] {$C_{in}=0$};
      
      % Output labels and arrows
      \draw [->] (adder.west) -- ++(-0.5,0);
      \draw [->] (adder.south) -- ++(0,-0.5) node[below] {$\Sigma_0$};
  \end{scope}
  \begin{scope}[xshift=-3.5cm]
      % Draw the full adder block
      \draw (0,0) node[draw, minimum width=3cm, minimum height=3cm] (adder) {1-bit adder};
      
      % Input labels and arrows
      \draw [<-] (-0.5, 1.5) -- (-0.5,2) node[above] {$A_1$};
      \draw [<-] (0.5, 1.5) -- (0.5,2) node[above] {$B_1$};
      
      % Output labels and arrows
      \draw [->] (adder.west) -- ++(-0.5,0) node[left] {$\ldots$};
      \draw [->] (adder.south) -- ++(0,-0.5) node[below] {$\Sigma_1$};
  \end{scope}
  \begin{scope}[xshift=-8.15cm]
      % Draw the full adder block
      \draw (0,0) node[draw, minimum width=3cm, minimum height=3cm] (adder) {1-bit adder};
      
      % Input labels and arrows
      \draw [<-] (-0.5, 1.5) -- (-0.5,2) node[above] {$A_{n-1}$};
      \draw [<-] (0.5, 1.5) -- (0.5,2) node[above] {$B_{n-1}$};
      \draw [<-] ++(adder.east) -- ++(0.5, 0);
      
      % Output labels and arrows
      \draw [->] (adder.west) -- ++(-0.5,0) node[left] {$C_{out}$};
      \draw [->] (adder.south) -- ++(0,-0.5) node[below] {$\Sigma_{n-1}$};
  \end{scope}
\end{tikzpicture}
\end{document}

Where each module is a 1-bit adder,

\begin{document}
\begin{tikzpicture}
   % Draw the full adder block
   \draw (0,0) node[draw, minimum width=3cm, minimum height=3cm] (adder) {1-bit adder};
   
   % Input labels and arrows
   \draw [<-] (-0.5, 1.5) -- (-0.5,2) node[above] {A};
   \draw [<-] (0.5, 1.5) -- (0.5,2) node[above] {B};
   \draw [<-] ++(adder.east) -- ++(0.5, 0) node[right] {$C_{in}$};
   
   % Output labels and arrows
   \draw [->] (adder.west) -- ++(-0.5,0) node[left] {$C_{out}$};
   \draw [->] (adder.south) -- ++(0,-0.5) node[below] {$\Sigma$};
\end{tikzpicture}
\end{document}

Properties

There are possible values for each binary number.
There are possible input combinations in total.

Examples

1-Bit Adder

\begin{document}
\begin{tikzpicture}
    % Draw the full adder block
    \draw (0,0) node[draw, minimum width=3cm, minimum height=3cm] (adder) {1-bit adder};
    
    % Input labels and arrows
    \draw [<-] (-0.5, 1.5) -- (-0.5,2) node[above] {A};
    \draw [<-] (0.5, 1.5) -- (0.5,2) node[above] {B};
    \draw [<-] ++(adder.east) -- ++(0.5, 0) node[right] {$C_{in}$};
    
    % Output labels and arrows
    \draw [->] (adder.west) -- ++(-0.5,0) node[left] {$C_{out}$};
    \draw [->] (adder.south) -- ++(0,-0.5) node[below] {$\Sigma$};
\end{tikzpicture}
\end{document}