二进制长除法

二进制长除法

是否存在一个包,通过它我能够重现以下使用二进制算术的长除法过程?

在此处输入图片描述

我查看了longdivision软件包,但没有找到方法让它使用二进制算术而不是十进制。

tikz或者这是唯一能以表格形式绘制或书写的方法吗?

如您所见,显示的图像质量很差,因此直接复制它们是行不通的。除了这个例子,我还需要绘制许多其他例子。

答案1

显示的图像部分解释了信道编码如何利用 CRC 进行工作。

我曾想象,在\longdivision计算长除法的软件包中内置了一些用于计算十进制数的模块,而这个模块可以用执行二进制计算的模块替换。似乎对于这个问题,只有我或少数人对此感兴趣。

由于我不擅长编写 LaTeX 软件包代码,而且我需要完成教科书的其他部分,所以我把实验留到了夏天或秋天,那时(希望我能完成临时项目)。

因此,我决定采用tabularray表格编写包来手写长除法作为临时解决方案:

\documentclass[border=1mm, 11pt]{standalone}
\usepackage{xcolor}
\usepackage{tabularray}
\UseTblrLibrary{amsmath}
%---------------------------------------------------------------%

\begin{document}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\SetTblrInner{colsep=1pt,
             rowsep=0.5pt, stretch=-1,
             cells = {font=\footnotesize},
             cell{odd[2-Z]}{18} = {l, bg=gray!10},
             cell{2-Z}{14-17} = {fg=blue},
             hline{2}={6-17}{0.5pt},
             hline{3}={5-5}{0.5pt}, vline{6}={2}{0.5pt}, vline{14}={2-Z}{dashed,0.5pt}
             }
%---------------------------------------------------------------%
\begin{tblr}{colspec={*{17}{Q[c,mode=math]} Q[r, fg=black!70, font=\tiny, mode=math, leftsep=6pt] },
             cell{odd[2-Z]}{18} = {l},
             }
    &   &   &   &   & 0 & 0 & 0 & 0 & 1 & 0 & 0 & 1 & 0 & 0 & 1 & 0 &                       \\   
  1 & 1 & 0 & 0 & 1 & 1 & 1 & 1 & 0 & 0 & 1 & 1 & 0 & 0 & 0 & 0 & 0 &             1<11001 \\ 
    &   &   &   & - & 0 &   &   &   &   &   &   &   &   &   &   &   &   \gets 0{\cdot}11001 \\   
                        \cline{6-7}
    &   &   &   &   & 1 & 1 &   &   &   &   &   &   &   &   &   &   &       11<11001        \\
    &   &   &   & - & 0 & 0 &   &   &   &   &   &   &   &   &   &   &   \gets 0{\cdot}11001 \\   
                        \cline{6-8}
    &   &   &   &   & 1 & 1 & 1 &   &   &   &   &   &   &   &   &   &       111<11001       \\  
    &   &   &   &   & - & 0 & 0 &   &   &   &   &   &   &   &   &   &   \gets 0{\cdot}11001 \\ 
                        \cline{6-9}
    &   &   &   &   & 1 & 1 & 1 & 0 &   &   &   &   &   &   &   &   &        1110<11001     \\  
    &   &   &   & - & 0 & 0 & 0 & 0 &   &   &   &   &   &   &   &   &   \gets 0{\cdot}11001 \\     
                        \cline{6-10}
    &   &   &   &   & 1 & 1 & 1 & 0 & 0 &   &   &   &   &   &   &   &       11100>11001     \\  
    &   &   &   & - & 1 & 1 & 0 & 0 & 1 &   &   &   &   &   &   &   &   \gets 1{\cdot}11001 \\      
                        \cline{6-11}
    &   &   &   &   & 0 & 0 & 0 & 1 & 1 & 1 &   &   &   &   &   &   &        111<11001      \\  
    &   &   &   &   & - & 0 & 0 & 0 & 0 & 0 &   &   &   &   &   &   &   \gets 0{\cdot}11001 \\   
                        \cline{6-12}
    &   &   &   &   &   & 0 & 0 & 1 & 1 & 1 & 1 &   &   &   &   &   &       1110<11001      \\  
    &   &   &   &   &   & - & 0 & 0 & 0 & 0 & 0 &   &   &   &   &   &   \gets 0{\cdot}11001 \\
                        \cline{8-13}
    &   &   &   &   &   &   & 0 & 1 & 1 & 1 & 1 & 0 &   &   &   &   &        11110>11001    \\    
    &   &   &   &   &   &   & - & 1 & 1 & 0 & 0 & 1 &   &   &   &   &   \gets 1{\cdot}11001 \\      
                        \cline[fg=red]{9-14}
    &   &   &   &   &   &   &   & 0 & 0 & 1 & 0 & 1 & 0 &   &   &   &         1010<11001    \\   
    &   &   &   &   &   &   &   & - & 0 & 0 & 0 & 0 & 0 &   &   &   &   \gets 0{\cdot}11001 \\      
                       \cline{10-15}
    &   &   &   &   &   &   &   &   &   & 1 & 0 & 1 & 0 & 0 &   &   &      10100<11001     \\    
    &   &   &   &   &   &   &   & - &   & 0 & 0 & 0 & 0 & 0 &   &   &   \gets 01{\cdot}11001 \\  
                      \cline{11-16}
    &   &   &   &   &   &   &   &   &   & 1 & 0 & 1 & 0 & 0 & 0 &   &       101000>11001    \\    
    &   &   &   &   &   &   &   &   &   & - & 1 & 1 & 0 & 0 & 1 &   &   \gets 1{\cdot}11001 \\  
                       \cline{12-17}
    &   &   &   &   &   &   &   &   &   &   & 0 & 1 & 1 & 1 & 1 & 0 &         111101>11001  \\    
    &   &   &   &   &   &   &   &   &   &   & - & 1 & 1 & 0 & 0 & 1 &   \gets 0{\cdot}11001 \\  
                        \cline{12-17}
    &   &   &   &   &   &   &   &   &   &   &   & 0 & 0 & 1 & 0 & 1 &   \text{FCS}   
    \end{tblr}

%---------------------------------------------------------------%
\begin{tblr}{colspec={*{17}{Q[c,mode=math]} Q[r, fg=black!70, font=\tiny, mode=math, leftsep=6pt] },
             cell{odd[2-Z]}{18} = {l},
             }
    &   &   &   &   & 0 & 0 & 0 & 0 & 1 & 0 & 0 & 1 & 0 & 1 & 1 & 0 &                       \\   
  1 & 1 & 0 & 0 & 1 & 1 & 1 & 1 & 0 & 0 & 1 & 1 & 0 & 0 & 1 & 0 & 1 &             1<11001 \\ 
    &   &   &   & - & 0 &   &   &   &   &   &   &   &   &   &   &   &   \gets 0{\cdot}11001 \\   
                        \cline{6-7}
    &   &   &   &   & 1 & 1 &   &   &   &   &   &   &   &   &   &   &       11<11001        \\
    &   &   &   & - & 0 & 0 &   &   &   &   &   &   &   &   &   &   &   \gets 0{\cdot}11001 \\   
                        \cline{6-8}
    &   &   &   &   & 1 & 1 & 1 &   &   &   &   &   &   &   &   &   &       111<11001       \\  
    &   &   &   &   & - & 0 & 0 &   &   &   &   &   &   &   &   &   &   \gets 0{\cdot}11001 \\ 
                        \cline{6-9}
    &   &   &   &   & 1 & 1 & 1 & 0 &   &   &   &   &   &   &   &   &        1110<11001     \\  
    &   &   &   & - & 0 & 0 & 0 & 0 &   &   &   &   &   &   &   &   &   \gets 0{\cdot}11001 \\     
                        \cline{6-10}
    &   &   &   &   & 1 & 1 & 1 & 0 & 0 &   &   &   &   &   &   &   &       11100>11001     \\  
    &   &   &   & - & 1 & 1 & 0 & 0 & 1 &   &   &   &   &   &   &   &   \gets 1{\cdot}11001 \\      
                        \cline{6-11}
    &   &   &   &   & 0 & 0 & 0 & 1 & 1 & 1 &   &   &   &   &   &   &        111<11001      \\  
    &   &   &   &   & - & 0 & 0 & 0 & 0 & 0 &   &   &   &   &   &   &   \gets 0{\cdot}11001 \\   
                        \cline{6-12}
    &   &   &   &   &   & 0 & 0 & 1 & 1 & 1 & 1 &   &   &   &   &   &       1110<11001      \\  
    &   &   &   &   &   & - & 0 & 0 & 0 & 0 & 0 &   &   &   &   &   &   \gets 0{\cdot}11001 \\
                        \cline{8-13}
    &   &   &   &   &   &   & 0 & 1 & 1 & 1 & 1 & 0 &   &   &   &   &        11110>11001    \\    
    &   &   &   &   &   &   & - & 1 & 1 & 0 & 0 & 1 &   &   &   &   &   \gets 1{\cdot}11001 \\      
                        \cline[fg=red]{9-14}
    &   &   &   &   &   &   &   & 0 & 0 & 1 & 0 & 1 & 0 &   &   &   &         1011<11001    \\   
    &   &   &   &   &   &   &   & - & 0 & 0 & 0 & 0 & 0 &   &   &   &   \gets 0{\cdot}11001 \\      
                       \cline{10-15}
    &   &   &   &   &   &   &   &   &   & 1 & 0 & 1 & 0 & 1 &   &   &      101010<11001     \\    
    &   &   &   &   &   &   &   & - &   & 0 & 0 & 0 & 0 & 0 &   &   &   \gets 01{\cdot}11001 \\  
                      \cline{11-16}
    &   &   &   &   &   &   &   &   &   & 1 & 0 & 1 & 0 & 1 & 0 &   &       101101>11001    \\    
    &   &   &   &   &   &   &   &   &   & - & 1 & 1 & 0 & 0 & 1 &   &   \gets 1{\cdot}11001 \\  
                       \cline{12-17}
    &   &   &   &   &   &   &   &   &   &   & 1 & 0 & 1 & 0 & 0 & 1 &         111101>11001  \\    
    &   &   &   &   &   &   &   &   &   &   & - & 1 & 1 & 0 & 0 & 1 &   \gets 1{\cdot}11001 \\  
                        \cline{12-17}
    &   &   &   &   &   &   &   &   &   &   &   & 0 & 0 & 0 & 0 & 0 &   \text{ni napake}   
    \end{tblr}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\end{document}

结果如下:

在此处输入图片描述

顺便说一句,完成上述代码并将结果与​​显示的示例进行比较后,我发现它有错误:-(。

无论如何,我希望上述代码能够对某人有所帮助。

答案2

看看https://www.ctan.org/pkg/basicarith它提供了格式化宏而不自动执行计算,并考虑编写一个程序来生成二进制除法序列。

相关内容