?? cyclic redundancy check.htm
字號:
<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 >> 8) ^ byte;<BR>crc <<= 8;<BR>quick = temp
^ (temp >> 4);<BR>crc ^= quick;<BR>quick <<= 5;<BR>crc ^=
quick;<BR>quick <<= 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 << 24;<BR>for(index = 0;
index <= 7;
index++)<BR> {<BR> crc = crc &
0x80000000 ? (crc << 1) ^ 0x04C11DB7 : crc <<
1;<BR> } </CODE>
<HR>
<ADDRESS>2000-09-05</ADDRESS></BODY></HTML>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -