答案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它提供了格式化宏而不自动执行计算,并考虑编写一个程序来生成二进制除法序列。