⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cyclic redundancy check.htm

📁 CRC16的源程序
💻 HTM
📖 第 1 页 / 共 2 页
字号:
  <TR>
    <TD colSpan=4></TD>
    <TD><CODE><B>t<SUB>7..4</SUB></B></CODE></TD></TR>
  <TR>
    <TD><CODE>c<SUB>15..13</SUB></CODE></TD>
    <TD><CODE>=</CODE></TD>
    <TD><CODE>c<SUB>7..5</SUB></CODE></TD>
    <TD><CODE><IMG height=9 alt=^ src="Cyclic Redundancy Check.files/XOR.gif" 
      width=11></CODE></TD>
    <TD><CODE><I><B>t<SUB>3..1</SUB></B></I></CODE></TD>
    <TD><CODE><IMG height=9 alt=^ src="Cyclic Redundancy Check.files/XOR.gif" 
      width=11></CODE></TD>
    <TD><CODE><I>t<SUB>7..5</SUB></I></CODE></TD></TR>
  <TR>
    <TD><CODE>c<SUB>12..12</SUB></CODE></TD>
    <TD><CODE>=</CODE></TD>
    <TD><CODE>c<SUB>4..4</SUB></CODE></TD>
    <TD><CODE><IMG height=9 alt=^ src="Cyclic Redundancy Check.files/XOR.gif" 
      width=11></CODE></TD>
    <TD><CODE><I><B>t<SUB>0..0</SUB></B></I></CODE></TD>
    <TD><CODE><IMG height=9 alt=^ src="Cyclic Redundancy Check.files/XOR.gif" 
      width=11></CODE></TD>
    <TD><CODE><I>t<SUB>4..4</SUB></I></CODE></TD>
    <TD><CODE><IMG height=9 alt=^ src="Cyclic Redundancy Check.files/XOR.gif" 
      width=11></CODE></TD>
    <TD><CODE><B>t<SUB>7..7</SUB></B></CODE></TD></TR>
  <TR>
    <TD><CODE>c<SUB>11..9</SUB></CODE></TD>
    <TD><CODE>=</CODE></TD>
    <TD><CODE>c<SUB>3..1</SUB></CODE></TD>
    <TD colSpan=4 rowSpan=2></TD>
    <TD><CODE><IMG height=9 alt=^ src="Cyclic Redundancy Check.files/XOR.gif" 
      width=11></CODE></TD>
    <TD><CODE><B>t<SUB>6..4</SUB></B></CODE></TD></TR>
  <TR>
    <TD><CODE>c<SUB>8..8</SUB></CODE></TD>
    <TD><CODE>=</CODE></TD>
    <TD><CODE>c<SUB>0..0</SUB></CODE></TD>
    <TD><CODE><IMG height=9 alt=^ src="Cyclic Redundancy Check.files/XOR.gif" 
      width=11></CODE></TD>
    <TD><CODE><I><B>t<SUB>3..3</SUB></B></I></CODE></TD>
    <TD><CODE><IMG height=9 alt=^ src="Cyclic Redundancy Check.files/XOR.gif" 
      width=11></CODE></TD>
    <TD><CODE><I>t<SUB>7..7</SUB></I></CODE></TD></TR>
  <TR>
    <TD><CODE>c<SUB>7..5</SUB></CODE></TD>
    <TD><CODE>=</CODE></TD>
    <TD colSpan=2 rowSpan=3></TD>
    <TD><CODE><B>t<SUB>7..5</SUB></B></CODE></TD>
    <TD colSpan=2></TD>
    <TD><CODE><IMG height=9 alt=^ src="Cyclic Redundancy Check.files/XOR.gif" 
      width=11></CODE></TD>
    <TD><CODE><I><B>t<SUB>2..0</SUB></B></I></CODE></TD>
    <TD><CODE><IMG height=9 alt=^ src="Cyclic Redundancy Check.files/XOR.gif" 
      width=11></CODE></TD>
    <TD><CODE><I>t<SUB>6..4</SUB></I></CODE></TD></TR>
  <TR>
    <TD><CODE>c<SUB>4..4</SUB></CODE></TD>
    <TD><CODE>=</CODE></TD>
    <TD><CODE><B>t<SUB>4..4</SUB></B></CODE></TD></TR>
  <TR>
    <TD><CODE>c<SUB>3..0</SUB></CODE></TD>
    <TD><CODE>=</CODE></TD>
    <TD><CODE><I><B>t<SUB>3..0</SUB></B></I></CODE></TD>
    <TD><CODE><IMG height=9 alt=^ src="Cyclic Redundancy Check.files/XOR.gif" 
      width=11></CODE></TD>
    <TD><CODE><I>t<SUB>7..4</SUB></I></CODE></TD></TR></TBODY></TABLE>
<P>Note that combination <I>t<SUB>3..0</SUB><IMG height=9 alt=^ 
src="Cyclic Redundancy Check.files/XOR.gif" width=11>t<SUB>7..4</SUB></I> is 
used serveral times (when you combine the proper formula lines). The same way, 
<B>t<SUB>7..0</SUB></B> can be found a few times too. We use this fact to 
simplify the formulas. </P>
<TABLE>
  <TBODY>
  <TR>
    <TD><CODE>t<SUB>7..0</SUB></CODE></TD>
    <TD><CODE>=</CODE></TD>
    <TD colSpan=2 rowSpan=2></TD>
    <TD><CODE>c<SUB>15..8</SUB></CODE></TD>
    <TD colSpan=2></TD>
    <TD><CODE><IMG height=9 alt=^ src="Cyclic Redundancy Check.files/XOR.gif" 
      width=11></CODE></TD>
    <TD colSpan=2></TD>
    <TD><CODE>b<SUB>7..0</SUB></CODE></TD></TR>
  <TR>
    <TD><CODE>c<SUB>15..0</SUB></CODE></TD>
    <TD><CODE>=</CODE></TD>
    <TD><CODE>c<SUB>7..0</SUB></CODE></TD>
    <TD><CODE>|</CODE></TD>
    <TD><CODE>00000000</CODE></TD></TR>
  <TR>
    <TD><CODE>q<SUB>15..0</SUB></CODE></TD>
    <TD><CODE>=</CODE></TD>
    <TD align=right><CODE>00000000</CODE></TD>
    <TD><CODE>|</CODE></TD>
    <TD><CODE>t<SUB>7..0</SUB></CODE></TD>
    <TD colSpan=2 rowSpan=2></TD>
    <TD><CODE><IMG height=9 alt=^ src="Cyclic Redundancy Check.files/XOR.gif" 
      width=11></CODE></TD>
    <TD><CODE>000000000000</CODE></TD>
    <TD><CODE>|</CODE></TD>
    <TD><CODE>t<SUB>7..4</SUB></CODE></TD></TR>
  <TR>
    <TD><CODE>c<SUB>15..0</SUB></CODE></TD>
    <TD><CODE>=</CODE></TD>
    <TD colSpan=2></TD>
    <TD><CODE>c<SUB>15..0</SUB></CODE></TD>
    <TD><CODE><IMG height=9 alt=^ src="Cyclic Redundancy Check.files/XOR.gif" 
      width=11></CODE></TD>
    <TD colSpan=2></TD>
    <TD><CODE>q<SUB>15..0</SUB></CODE></TD></TR>
  <TR>
    <TD><CODE>q<SUB>15..0</SUB></CODE></TD>
    <TD><CODE>=</CODE></TD>
    <TD align=right><CODE>000</CODE></TD>
    <TD><CODE>|</CODE></TD>
    <TD><CODE>q<SUB>7..0</SUB></CODE></TD>
    <TD><CODE>|</CODE></TD>
    <TD><CODE>00000</CODE></TD></TR>
  <TR>
    <TD><CODE>c<SUB>15..0</SUB></CODE></TD>
    <TD><CODE>=</CODE></TD>
    <TD colSpan=2 rowSpan=3></TD>
    <TD><CODE>c<SUB>15..0</SUB></CODE></TD>
    <TD colSpan=2></TD>
    <TD><CODE><IMG height=9 alt=^ src="Cyclic Redundancy Check.files/XOR.gif" 
      width=11></CODE></TD>
    <TD colSpan=2></TD>
    <TD><CODE>q<SUB>15..0</SUB></CODE></TD></TR>
  <TR>
    <TD><CODE>q<SUB>15..0</SUB></CODE></TD>
    <TD><CODE>=</CODE></TD>
    <TD><CODE>q<SUB>8..5</SUB></CODE></TD>
    <TD><CODE>|</CODE></TD>
    <TD><CODE>000000000000</CODE></TD></TR>
  <TR>
    <TD><CODE>c<SUB>15..0</SUB></CODE></TD>
    <TD><CODE>=</CODE></TD>
    <TD><CODE>c<SUB>15..0</SUB></CODE></TD>
    <TD colSpan=2></TD>
    <TD><CODE><IMG height=9 alt=^ src="Cyclic Redundancy Check.files/XOR.gif" 
      width=11></CODE></TD>
    <TD colSpan=2></TD>
    <TD><CODE>q<SUB>15..0</SUB></CODE></TD></TR></TBODY></TABLE>
<P>A | means the bit parts have to combined into one value. </P>
<P>The simplified formulas process 8 bits at a time. They form the basis of an 
accelerated source code example. </P><CODE>unsigned short crc = 
0xFFFF;<BR>unsigned short temp;<BR>unsigned short quick;<BR>unsigned char byte = 
0x5A;<BR><BR>temp = (crc &gt;&gt; 8) ^ byte;<BR>crc &lt;&lt;= 8;<BR>quick = temp 
^ (temp &gt;&gt; 4);<BR>crc ^= quick;<BR>quick &lt;&lt;= 5;<BR>crc ^= 
quick;<BR>quick &lt;&lt;= 7;<BR>crc ^= quick; </CODE>
<P>In this source code example too, the initial CRC value and the byte to be 
processed are already defined. The one step calculation result is: </P>
<TABLE>
  <TBODY>
  <TR align=middle>
    <TD width=50><CODE>crc</CODE></TD>
    <TD width=50><CODE>byte</CODE></TD></TR>
  <TR align=middle>
    <TD width=50><CODE>F F F F</CODE></TD>
    <TD width=50><CODE>5 A</CODE></TD></TR>
  <TR align=middle>
    <TD width=50><CODE>1 A 4 F</CODE></TD></TR></TBODY></TABLE>
<H2>32-bit CRC</H2>
<P>The ITU-TSS has defined a 32-bit CRC too. Its formula is: 
G(x)=x<SUP>26</SUP>+x<SUP>23</SUP>+x<SUP>22</SUP>+x<SUP>16</SUP>+x<SUP>12</SUP>+x<SUP>11</SUP>+x<SUP>10</SUP>+x<SUP>8</SUP>+x<SUP>7</SUP>+x<SUP>5</SUP>+x<SUP>4</SUP>+x<SUP>2</SUP>+x<SUP>1</SUP>+1=0 
</P>
<P>Below is a source code example for calculating the 32-bit CRC. 
</P><CODE>unsigned long crc = 0xFFFFFFFF;<BR>unsigned char byte = 
0x5A;<BR>unsigned short index;<BR><BR>crc ^= byte &lt;&lt; 24;<BR>for(index = 0; 
index &lt;= 7; 
index++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;crc = crc &amp; 
0x80000000 ? (crc &lt;&lt; 1) ^ 0x04C11DB7 : crc &lt;&lt; 
1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;} </CODE>
<HR>

<ADDRESS>2000-09-05</ADDRESS></BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -