Knowledge (XXG)

Computation of cyclic redundancy checks

Source 📝

7051:+ 1. This is a carefully selected multiple of the CRC-32 polynomial such that the terms (feedback taps) are at least 8 positions apart. Thus, a 123-bit shift register can be advanced 8 bits per iteration using only two-input XOR gates, the fastest possible. Finally the intermediate remainder can be reduced modulo the standard polynomial in a second shift register to yield the CRC-32 remainder. 68: 25: 7151:
This has an effect on one-pass CRC checking: instead of producing a result of zero when the message is correct, it produces a fixed non-zero result. (To be precise, the result is the CRC, with zero preset but with post-invert, of the inversion pattern.) Once this constant has been obtained (e.g. by
7131:
This does not affect CRC generation and checking in any way, as long as both generator and checker use the same initial value. Any non-zero initial value will do, and a few standards specify unusual values, but the all-ones value (−1 in twos complement binary) is by far the most common. Note that a
4351:
Parallel update for a byte or a word at a time can also be done explicitly, without a table. This is normally used in high-speed hardware implementations. For each bit an equation is solved after 8 bits have been shifted in. The following tables list the equations for some commonly used polynomials,
4342:
There is no particular need for the slices to be 8 bits wide. For example, it would be entirely possible to compute a CRC 64 bits at a time using a slice-by-9 algorithm, using 9 128-entry lookup tables to handle 63 bits, and the 64th bit handled by the bit-at-a-time algorithm (which is effectively a
2251:
Observe that after each subtraction, the bits are divided into three groups: at the beginning, a group which is all zero; at the end, a group which is unchanged from the original; and a blue shaded group in the middle which is "interesting". The "interesting" group is 8 bits long, matching the degree
7111:
The basic mathematics of a CRC accepts (considers as correctly transmitted) messages which, when interpreted as a polynomial, are a multiple of the CRC polynomial. If some leading 0 bits are prepended to such a message, they will not change its interpretation as a polynomial. This is equivalent to
4255:
So the large table is not stored explicitly, but each iteration computes the CRC value that would be there by combining the values in two smaller tables. That is, the 16-bit index is "sliced" into two 8-bit indexes. At first glance, this seems pointless; why do two lookups in separate tables, when
251:
Checking received data with checksum. The received message is shifted through the same register as used in the generator, but the received checksum is attached to it instead of zeroes. Correct data yields the all-zeroes result; a corrupted bit in either the message or checksum would give a different
3314:
and writing explicit conversions from binary to polynomial form. In practice, the CRC is held in a standard binary register using a particular bit-ordering convention. In msbit-first form, the most significant binary bits will be sent first and so contain the higher-order polynomial coefficients,
3709:
The software to generate the tables is so small and fast that it is usually faster to compute them on program startup than to load precomputed tables from storage. One popular technique is to use the bit-at-a-time code 256 times to generate the CRCs of the 256 possible 8-bit bytes. However, this
4281:
the CRC size, there is a minor speedup. In the part of the basic Sarwate algorithm where the previous CRC value is shifted by the size of the table lookup, the previous CRC value is shifted away entirely (what remains is all zero), so the XOR can be eliminated from the critical path.
4315:
This still has the property that all of the loads in the second step must be completed before the next iteration can commence, resulting in regular pauses during which the processor's memory subsystem (in particular, the data cache) is unused. However, when the slicing width
7011:
As the CRC-32 polynomial has a large number of terms, when computing the remainder a byte at a time each bit depends on up to 8 bits of the previous iteration. In byte-parallel hardware implementations this calls for either 8-input or cascaded XOR gates which increases
3693:
Using a 256-entry table is usually most convenient, but other sizes can be used. In small microcontrollers, using a 16-entry table to process four bits at a time gives a useful speed improvement while keeping the table small. On computers with ample storage, a
4270:
When sliced tables are used, both lookups can begin at the same time. If the processor can perform two loads in parallel (2020s microprocessors can keep track of over 100 loads in progress), then this has the potential to double the speed of the inner loop.
7115:
But if the message being transmitted does care about leading 0 bits, the inability of the basic CRC algorithm to detect such a change is undesirable. If it is possible that a transmission error could add such bits, a simple solution is to start with the
7102:
In practice, most standards specify presetting the register to all-ones and inverting the CRC before transmission. This has no effect on the ability of a CRC to detect changed bits, but gives it the ability to notice bits that are added to the message.
7147:
A similar solution can be applied at the end of the message, inverting the CRC register before it is appended to the message. Again, any non-zero change will do; inverting all the bits (XORing with an all-ones pattern) is simply the most common.
3689:
includes an appendix with a short and simple table-driven implementation in C of CRC-32. You will note that the code corresponds to the lsbit-first byte-at-a-time pseudocode presented here, and the table is generated using the bit-at-a-time code.
3256:) standards specify least-significant bit first (little-endian) transmission, so a software CRC implementation to protect data sent across such a link should map the least significant bits in each byte to coefficients of the highest powers of 7094:. (This requires multiple frames to detect acquisition or loss of framing, so is limited to applications where the frames are a known length, and the frame contents are sufficiently random that valid CRCs in misaligned data are rare.) 2847:
This is the standard bit-at-a-time hardware CRC implementation, and is well worthy of study; once you understand why this computes exactly the same result as the first version, the remaining optimizations are quite straightforward. If
4231:
To understand the advantages, start with the slice-by-2 case. We wish to compute a CRC 2 bytes (16 bits) at a time, but the standard table-based approach would require an inconveniently large 65536-entry table. As mentioned in
7071:
When appending a CRC to a message, it is possible to detach the transmitted CRC, recompute it, and verify the recomputed value against the transmitted one. However, a simpler technique is commonly used in hardware.
2252:
of the polynomial. Every step, the appropriate multiple of the polynomial is subtracted to make the zero group one bit longer, and the unchanged group becomes one bit shorter, until only the final remainder is left.
7062:
Block-wise computation of the remainder can be performed in hardware for any CRC polynomial by factorizing the State Space transformation matrix needed to compute the remainder into two simpler Toeplitz matrices.
7678:
The fact that the CRC of a message followed by its CRC is a constant value which does not depend on the message... is well known and has been widely used in the telecommunication industry for long time.
3315:
while in lsbit-first form, the least-significant binary bits contain the higher-order coefficients. The above pseudocode can be written in both forms. For concreteness, this uses the 16-bit CRC-16-
3287:
The lsbit-first CRC is slightly simpler to implement in software, so is somewhat more commonly seen, but many programmers find the msbit-first bit ordering easier to follow. Thus, for example, the
7144:, and if it was previously a multiple of the CRC polynomial, the result of that multiplication will be, as well. This is equivalent to the fact that, since 726 is a multiple of 11, so is 7260. 4217:(typically slice-by-8 for CRC32) algorithm that usually doubles or triples the performance compared to the Sarwate algorithm. Instead of reading 8 bits at a time, the algorithm reads 8 542: 4343:
1-bit, 2-entry lookup table). This would almost halve the table size (going from 8×256 = 2048 entries to 9×128 = 1152) at the expense of one more data-dependent load per iteration.
7140:
The same sort of error can occur at the end of a message, albeit with a more limited set of messages. Appending 0 bits to a message is equivalent to multiplying its polynomial by
4267:. In the standard algorithm, the index for each lookup depends on the value fetched in the previous one. Thus, the second lookup cannot begin until the first lookup is complete. 3376: 470: 243:
in the generator polynomial. The message stream may be any length. After it has been shifted through the register, followed by 8 zeroes, the result in the register is the checksum.
4327:
on any previous iteration. When XORing a 32-bit CRC with 64 bits of message, half of the result is simply a copy of the message. If coded carefully (to avoid creating a false
7152:
performing a one-pass CRC generate/check on an arbitrary message), it can be used directly to verify the correctness of any other message checked using the same CRC algorithm.
2360: 349: 256:
Various CRC standards extend the polynomial division algorithm by specifying an initial shift register value, a final Exclusive-Or step and, most critically, a bit ordering (
7120:
shift register set to some non-zero value; for convenience, the all-ones value is typically used. This is mathematically equivalent to complementing (binary NOT) the first
2299: 3177:, it is necessary to specify the bit ordering (endianness) of the data; which bit in each byte is considered "first" and will be the coefficient of the higher power of 608: 3237:; if adjacent polynomial terms are not transmitted sequentially, a physical error burst of one length may be seen as a longer burst due to the rearrangement of bits. 3121: 2686: 3148: 2881: 2642: 2604: 569: 3235: 3088: 640: 405: 3312: 3274: 3195: 3059: 3039: 2710: 2573: 2420: 2396: 369: 7075:
When the CRC is transmitted with the correct byte order (matching the chosen bit-ordering convention), a receiver can compute an overall CRC, over the message
7469: 7389: 144: 3613:
to process more than one bit of dividend per iteration. Most commonly, a 256-entry lookup table is used, replacing the body of the outer loop (over
2422:
is equivalent to shifting the register by one place, as the coefficients do not change in value but only move up to the next term of the polynomial.
116: 7574: 275:
As an example of implementing polynomial division in hardware, suppose that we are trying to compute an 8-bit CRC of an 8-bit message made of the
269: 181: 7079:
the CRC, and if they are correct, the result will be zero. This possibility is the reason that most network protocols which include a CRC do so
642:. This is just like decimal long division, but even simpler because the only possible multiples at each step are 0 and 1, and the subtractions 4339:
busy, which achieves maximum performance. As mentioned, on post-2000 microprocessors, slice-by-8 is generally sufficient to reach this level.
123: 3021:, the generator polynomial uniquely describes the bit assignment; the first bit transmitted is always the coefficient of the highest power of 378:
can be transmitted in two different orders, depending on the bit ordering convention used. Each one generates a different message polynomial
92:
of the topic and provide significant coverage of it beyond a mere trivial mention. If notability cannot be shown, the article is likely to be
7237: 3294:
So far, the pseudocode has avoided specifying the ordering of bits within bytes by describing shifts in the pseudocode as multiplications by
2887:
are simply discarded. This is the reason that you will usually see CRC polynomials written in binary with the leading coefficient omitted.
35: 2719:
iterations differently, but there is a more subtle optimization which is used universally, in both hardware and software implementations.
130: 7777: 7569: 7410: 7366: 3170: 163: 112: 7434:
Berry, Frank L.; Kounavis, Michael E. (November 2008). "Novel Table Lookup-Based Algorithms for High-Performance CRC Generation".
224: 7265: 646:"from infinity" instead of reducing the upper digits. Because we do not care about the quotient, there is no need to record it. 260:). As a result, the code seen in practice deviates confusingly from "pure" division, and the register may shift left or right. 248: 89: 7132:
one-pass CRC generate/check will still produce a result of zero when the message is correct, regardless of the preset value.
2444: 232: 2378:
Writing out the full message at each step, as done in the example above, is very tedious. Efficient implementations use an
3592:. In either case, be sure to transmit the bytes of the CRC in the order that matches your chosen bit-ordering convention. 7054:
If 3- or 4-input XOR gates are permitted, shorter intermediate polynomials of degree 71 or 53, respectively, can be used.
4264: 85: 7388:
Kounavis, M.E.; Berry, F.L. (2005). "A Systematic Approach to Building High Performance Software-Based CRC Generators".
7334:"Portable Network Graphics (PNG) Specification (Second Edition): Annex D, Sample Cyclic Redundancy Code implementation" 2894:
of each bit until the very last moment, it is also possible to do it earlier. It is usually convenient to perform the
101: 3204:, it is best to use the bit ordering the data will ultimately be sent in. This is because a CRC's ability to detect 137: 7174: 7482: 7684: 7296: 3686: 3679: 2451: 7690: 4335:
the previous loop iteration has completed. The result is enough work to keep the processor's memory subsystem
2547:
Note that this example code avoids the need to specify a bit-ordering convention by not using bytes; the input
475: 7533: 7083:
the ending delimiter; it is not necessary to know whether the end of the packet is imminent to check the CRC.
217: 3685:. Its polynomial can be written msbit-first as 0x04C11DB7, or lsbit-first as 0xEDB88320. The W3C webpage on 7708:
TMS37157 data sheet - Passive Low Frequency Interface Device With EEPROM and 134.2 kHz Transponder Interface
7622:"Block-wise computation of Cyclic Redundancy Code using factored Toeplitz matrices in lieu of Look-Up Table" 3015: 228: 213: 177: 3322: 410: 78: 7782: 7197: 7169: 196:
operations replace subtractions. Division of this type is efficiently realised in hardware by a modified
192:
message string, with a fixed number of zeroes appended, by the "generator polynomial" string except that
7754: 7164: 4535: 3158: 2312: 97: 4525: 3201: 302: 93: 7549: 7545: 3018: 2258: 7668: 7649: 7451: 7416: 7315: 7243: 2434: 643: 2965:
of remainderPolynomial = 1 { remainderPolynomial := (remainderPolynomial *
574: 7715: 7641: 7406: 7233: 7091: 7013: 4274:
This technique can obviously be extended to as many slices as the processor can benefit from.
3671: 296: 3093: 2810:
of remainderPolynomial) = 1 { remainderPolynomial := (remainderPolynomial *
2658: 7633: 7591: 7537: 7443: 7398: 7305: 7225: 3978:
nLookupIndex ← (crc32 xor byte) and 0xFF crc32 ← (crc32 shr 8) xor CRCTable
3003: 204:, starting with simple code close to the mathematics and becoming faster (and arguably more 7541: 7217: 3126: 2859: 2620: 2582: 613:
Computing the remainder then consists of subtracting multiples of the generator polynomial
547: 4328: 3675: 3211: 3162: 3064: 616: 381: 205: 7599: 7358: 2522:
of remainderPolynomial = 1 { remainderPolynomial := remainderPolynomial
5204:
Bit-wise update equations for some CRC-16 polynomials after 8 bits have been shifted in
2722:
Because the XOR operation used to subtract the generator polynomial from the message is
4475:
Bit-wise update equations for some CRC-8 polynomials after 8 bits have been shifted in
3718:. Only the table entries corresponding to powers of two need to be computed directly. 3297: 3259: 3180: 3044: 3024: 2695: 2558: 2405: 2399: 2381: 354: 197: 7771: 7653: 7499: 7455: 7269: 2301:. Converting to a hexadecimal number using the convention that the highest power of 185: 7420: 7247: 7319: 3682: 3606: 2461: 193: 7706: 4244:. We can use this identity to replace the large table by two 256-entry tables: 4222: 3915: 3277: 3253: 3205: 2727: 2723: 288: 189: 7621: 3914:
This is a practical algorithm for the CRC-32 variant of CRC. The CRCTable is a
7583: 3918:
of a calculation that would have to be repeated for each byte of the message (
3281: 2426: 351:. Writing the first bit transmitted (the coefficient of the highest power of 257: 7727:
The CRC Generator is initialized with the value 0x3791 as shown in Figure 50.
7645: 7518: 7743: 7637: 2730:, it does not matter in what order the various inputs are combined into the 2362:. Converting to hexadecimal using the convention that the highest power of 201: 7744:"64 Bit Cyclic Redundant Code – XOR Long Division To Bytewise Table Lookup" 7333: 3291:-CRC extension, an early use of CRCs in software, uses an msbit-first CRC. 7570:"A two-step computation of cyclic redundancy code CRC-32 for ATM networks" 7229: 7402: 7192: 3663: 3245: 3241: 3174: 236: 7595: 7310: 7291: 3710:
can be optimized significantly by taking advantage of the property that
2555:
is manipulated in terms of polynomial operations; the multiplication by
7447: 7218:"A BDD-Based Approach to Constructing LFSRS for Parallel CRC Encoding" 2742:
until the very last instant when it is tested to determine whether to
7759: 3288: 3249: 3166: 2977:{ remainderPolynomial := (remainderPolynomial * 3920:
Computation of cyclic redundancy checks § Multi-bit computation
223: 7023:
can be calculated by first computing the CRC of the message modulo
2890:
In software, it is convenient to note that while one may delay the
2606:
coefficient, which could be the right or left end of the register.
247: 7478: 4256:
the standard byte-at-a-time algorithm would do two lookups in the
3316: 3002:
This is usually the most compact software implementation, used in
2402:
to hold only the interesting bits. Multiplying the polynomial by
276: 222: 2997:
Code fragment 3: Polynomial division with bytewise message XORing
2842:
Code fragment 2: Polynomial division with deferred message XORing
2822:{ remainderPolynomial := (remainderPolynomial * 2609:
This code has two disadvantages. First, it actually requires an
371:) on the left, this corresponds to the 9-bit string "100000111". 84:
Please help to demonstrate the notability of the topic by citing
7471:
High Octane CRC Generation with the Intel Slicing-by-8 Algorithm
3667: 3658:
One of the most commonly encountered CRC algorithms is known as
3154: 2899: 2504:
len { remainderPolynomial := remainderPolynomial *
209: 7222:
2012 IEEE 42nd International Symposium on Multiple-Valued Logic
3889:
Code fragment 8: Byte-at-a-time CRC table generation, LSB first
3808:
Code fragment 7: Byte-at-a-time CRC table generation, MSB first
2983:// A popular variant complements remainderPolynomial here; see 2918:// A popular variant complements remainderPolynomial here; see 2828:// A popular variant complements remainderPolynomial here; see 2777:// A popular variant complements remainderPolynomial here; see 2644:
coefficient can be tested. More significantly, it requires the
2528:// A popular variant complements remainderPolynomial here; see 2487:// A popular variant complements remainderPolynomial here; see 7587: 7337: 2935:
len { remainderPolynomial := remainderPolynomial
2794:
len { remainderPolynomial := remainderPolynomial
2464:
the coefficients of each matching term from both polynomials.
61: 18: 7391:
10th IEEE Symposium on Computers and Communications (ISCC'05)
3471:
0xffff // Trim remainder to 16 bits } }
2902:
at a time, even in a bit-at-a-time implementation like this:
7292:"Computation of Cyclic Redundancy Checks via Table Look-Up" 4323:
This is because a portion of the results of the first step
3813:
little_endian_table := 0 crc := 1; i := 128
7266:"A Painless Guide to CRC Error Detection Algorithms V3.00" 3579:
Code fragment 5: Shift register based division, LSB first
3483:
Code fragment 4: Shift register based division, MSB first
3584:
Note that the lsbit-first form avoids the need to shift
2460:
two polynomials is to add them, modulo two; that is, to
2255:
In the msbit-first example, the remainder polynomial is
268:
For a discussion of polynomial division modulo two, see
3701:-entry table can be used to process 16 bits at a time. 42: 16:
Overview of the computation of cyclic redundancy checks
7755:"Efficient (~1 CPU cycle per byte) CRC implementation" 4179:// Finalize the CRC-32 value by inverting all the bits 3987:// Finalize the CRC-32 value by inverting all the bits 7216:
Dubrova, Elena; Mansouri, Shohreh Sharif (May 2012).
3872:
2 × i { little_endian_table := crc
3325: 3300: 3262: 3214: 3183: 3129: 3096: 3067: 3047: 3027: 2862: 2715:
The second problem could be solved by doing the last
2698: 2661: 2623: 2585: 2561: 2454:
that can be added, multiplied and exponentiated. To
2408: 2384: 2315: 2261: 619: 577: 550: 478: 413: 384: 357: 305: 4320:
the CRC size, a significant second speedup appears.
2575:
could be a left or right shift, and the addition of
4228:It is unclear who actually invented the algorithm. 3284:write the most significant bit of each byte first. 7667:Kadatch, Andrew; Jenkins, Bob (3 September 2010). 4221:bits at a time. Doing so maximizes performance on 3370: 3306: 3268: 3229: 3189: 3142: 3115: 3082: 3053: 3033: 2875: 2704: 2680: 2636: 2598: 2567: 2414: 2390: 2354: 2293: 634: 602: 563: 536: 464: 399: 363: 343: 7670:Everything we know about CRC but afraid to forget 3906:; you may use whichever form is more convenient. 3732:big_endian_table := 0 crc := 0x8000 // 7519:"Who invented the slicing-by-N CRC32 algorithm?" 4300:look up each byte of the resultant value in the 3208:is based on proximity in the message polynomial 295:. For illustration, we will use the CRC-8-ATM ( 4173:// CRCTable is an array of 256 32-bit constants 3981:// CRCTable is an array of 256 32-bit constants 3492:// 1+x+x+(x) = 1000 0100 0000 1000 (1) = 0x8408 3385:// (x)+x+x+1 = (1) 0001 0000 0010 0001 = 0x1021 2655:The first problem can be solved by testing the 2551:is already in the form of a bit array, and the 7112:the fact that 0001 and 1 are the same number. 3653:Code fragment 6: Cores of table based division 3489:// Least significant bit first (little-endian) 239:placed according to powers (white numbers) of 7177:is equivalent to a 1-bit CRC with polynomial 3467:1 } rem  := rem 2916:len) { remainderPolynomial := 0 2775:len) { remainderPolynomial := 0 544:= 11101010. These can then be multiplied by 8: 7259: 7257: 3855:iterate over the already-initialized entries 3778:iterate over the already-initialized entries 200:, and in software by a series of equivalent 7128:is the number of bits in the CRC register. 4331:), half of the slice table loads can begin 3876:little_endian_table; } i := i 3791:i−1 { big_endian_table := crc 2542:Code fragment 1: Simple polynomial division 252:result, warning that an error has occurred. 7090:the message delimiter, a technique called 4233: 3919: 3382:// Most significant bit first (big-endian) 571:to produce two 16-bit message polynomials 7309: 3609:indexed by highest order coefficients of 3569:// A popular variant complements rem here 3507:// A popular variant complements rem here 3473:// A popular variant complements rem here 3400:// A popular variant complements rem here 3356: 3343: 3330: 3324: 3299: 3261: 3213: 3182: 3134: 3128: 3101: 3095: 3066: 3046: 3026: 2867: 2861: 2697: 2666: 2660: 2628: 2622: 2590: 2584: 2560: 2407: 2383: 2346: 2333: 2320: 2314: 2279: 2266: 2260: 618: 582: 576: 555: 549: 537:{\displaystyle x^{7}+x^{6}+x^{5}+x^{3}+x} 522: 509: 496: 483: 477: 444: 431: 418: 412: 383: 356: 323: 310: 304: 164:Learn how and when to remove this message 113:"Computation of cyclic redundancy checks" 7359:"[MS-ABS]: 32-Bit CRC Algorithm" 6063: 5202: 4473: 4354: 3795:big_endian_table; } i := i 2753:This eliminates the need to preload the 2734:. And specifically, a given bit of the 2526:generatorPolynomial } } 2309:. In the lsbit-first, the remainder is 246: 7575:IBM Journal of Research and Development 7208: 3894:In these code samples, the table index 3601:Sarwate algorithm (single lookup table) 3061:bits transmitted are the CRC remainder 3006:when space is at a premium over speed. 2478:len) { remainderPolynomial := 279:character "W", which is binary 01010111 270:Mathematics of cyclic redundancy checks 7682: 3956:// Initialize CRC-32 to starting value 7086:In fact, a few protocols use the CRC 3371:{\displaystyle x^{16}+x^{12}+x^{5}+1} 472:= 01010111, while lsbit-first, it is 465:{\displaystyle x^{6}+x^{4}+x^{2}+x+1} 7: 7369:from the original on 7 November 2017 4364:CRC bit 7…0 (or 15…0) before update 4236:, CRC tables have the property that 3567:1 } } } 2981:) } } } 7500:"Brief tutorial on CRC computation" 4375:CRC bit 7…0 (or 15…0) after update 4000:In C, the algorithm looks as such: 3990:crc32 ← crc32 xor 0xFFFFFFFF 3605:Another common optimization uses a 3563:{ rem  := rem 3463:{ rem  := rem 3153:However, when bits are processed a 3123:and ending with the coefficient of 3090:, starting with the coefficient of 180:is derived from the mathematics of 7019:To maximise computation speed, an 4347:Parallel computation without table 4293:XOR the current CRC with the next 4209:Byte-Slicing using multiple tables 3748:0x8000 { crc := (crc 3636:(n-8))] // Lsbit-first rem = (rem 2973:generatorPolynomial } 2513:// Define bitString=0 for k>len 2443:is not an integer variable, but a 14: 7517:Menon-Sen, Abhijit (2017-01-20). 7290:Sarwate, Dilip V. (August 1998). 3171:asynchronous serial communication 2919: 2778: 2738:does not need to be added to the 2488: 2355:{\displaystyle x^{7}+x^{4}+x^{3}} 231:. The generator is a Galois-type 45:and remove advice or instruction. 7264:Williams, Ross N. (1996-09-24). 3173:, or when implementing a CRC in 2984: 2829: 2529: 66: 23: 7676:(Technical report). p. 4. 3950:// 32-bit unsigned CRC-32 value 3721:In the following example code, 3520:len { rem  := rem 3413:len { rem  := rem 3150:, a.k.a. the coefficient of 1. 2433:-bit CRC. It uses a contrived 344:{\displaystyle x^{8}+x^{2}+x+1} 227:Example of generating an 8-bit 182:polynomial division, modulo two 77:may not meet Knowledge (XXG)'s 7626:IEEE Transactions on Computers 7568:Glaise, René J. (1997-01-20). 7436:IEEE Transactions on Computers 3505:len) { rem  := 0 3224: 3218: 3157:at a time, such as when using 3077: 3071: 2818:generatorPolynomial } 2761:bits of the message, as well: 2484:// First n bits of the message 2425:Here is a first draft of some 629: 623: 597: 591: 394: 388: 1: 7753:Andrew Kadarch, Bob Jenkins. 4265:instruction-level parallelism 3825:1 { crc := (crc 3398:len) { rem := 0 2294:{\displaystyle x^{7}+x^{5}+x} 7695:A good source for even more 4311:results to get the next CRC. 4234:§ Generating the tables 3734:Assuming a 16-bit polynomial 3200:If the data is destined for 2613:+1-bit register to hold the 655:Least-significant bit first 184:. In practice, it resembles 79:general notability guideline 7718:, November 2009, p. 39 7124:bits of the message, where 3648:(rightmost 8 bits of rem)] 3538:// Assuming 8 bits per byte 3438:// Assuming 8 bits per byte 2956:// Assuming 8 bits per byte 2692:before it is multiplied by 1454: 648: 7799: 6459: 5727: 4881: 4496:(left-shifted CRC-7-CCITT) 3841:{ crc := crc 3764:{ crc := crc 3632:((leftmost 8 bits of rem) 3620:// Msbit-first rem = (rem 2883:coefficients of it and of 652:Most-significant bit first 267: 86:reliable secondary sources 75:The topic of this article 7532:Jon Buller (1996-03-15). 7504:The Linux Kernel Archives 7297:Communications of the ACM 6069: 5211: 4522:0x12 = (0x09 << 1) 4352:using following symbols: 3662:, used by (among others) 3423:// n = 16 in this example 3010:Bit ordering (endianness) 603:{\displaystyle x^{8}M(x)} 7778:Cyclic redundancy checks 7704:E.g. low-frequency RFID 7534:"Re: 8051 and CRC-CCITT" 6733: 6466: 5896: 5734: 5032: 4888: 4289:inner loop consists of: 4213:There exists a slice-by- 4002: 3959:crc32 ← 0xFFFFFFFF 2366:is the lsbit, this is 19 2305:is the msbit; this is A2 407:. Msbit-first, this is 7638:10.1109/TC.2022.3189574 4285:The resultant slice-by- 4277:When the slicing width 3116:{\displaystyle x^{n-1}} 2681:{\displaystyle x^{n-1}} 2437:for polynomials, where 178:cyclic redundancy check 7170:List of hash functions 7058:Block-wise computation 7021:intermediate remainder 3372: 3308: 3276:. On the other hand, 3270: 3231: 3191: 3144: 3117: 3084: 3055: 3035: 2992:remainderPolynomial } 2877: 2837:remainderPolynomial } 2826:) } } 2706: 2682: 2638: 2600: 2569: 2537:remainderPolynomial } 2416: 2392: 2356: 2295: 636: 604: 565: 538: 466: 401: 365: 345: 253: 244: 7620:Das, Arindam (2022). 7230:10.1109/ISMVL.2012.20 7165:Error correction code 4297:bytes of the message, 3705:Generating the tables 3596:Multi-bit computation 3559:0x8408 } 3549:// Test x coefficient 3459:0x1021 } 3449:// Test x coefficient 3373: 3309: 3271: 3232: 3192: 3161:, byte framing as in 3159:parallel transmission 3145: 3143:{\displaystyle x^{0}} 3118: 3085: 3056: 3036: 2942:(string) * x 2878: 2876:{\displaystyle x^{n}} 2707: 2683: 2639: 2637:{\displaystyle x^{n}} 2601: 2599:{\displaystyle x^{0}} 2570: 2417: 2393: 2357: 2296: 637: 605: 566: 564:{\displaystyle x^{8}} 539: 467: 402: 366: 346: 250: 226: 7742:JohnPaul Adamovsky. 7689:: CS1 maint: year ( 7477:(Technical report). 7403:10.1109/ISCC.2005.18 7397:. pp. 855–862. 7224:. pp. 128–133. 7007:Two-step computation 4513:(CRC-8-Dallas/Maxim) 4011:// uint32_t, uint8_t 3644:little_endian_table 3323: 3298: 3260: 3230:{\displaystyle M(x)} 3212: 3202:serial communication 3181: 3127: 3094: 3083:{\displaystyle R(x)} 3065: 3045: 3025: 3014:When implemented in 2860: 2856:bits long, then the 2696: 2659: 2621: 2583: 2559: 2406: 2382: 2313: 2259: 635:{\displaystyle G(x)} 617: 575: 548: 476: 411: 400:{\displaystyle M(x)} 382: 355: 303: 218:space–time tradeoffs 43:rewrite this article 7596:10.1147/rd.416.0705 7311:10.1145/63030.63037 7198:Fletcher's checksum 5205: 4476: 4386:input data bit 7…0 3849:little_endian_table 3845:1 } // crc 3768:1 } // crc 3725:holds the value of 2920:§ Preset to −1 2885:generatorPolynomial 2850:remainderPolynomial 2779:§ Preset to −1 2755:remainderPolynomial 2748:generatorPolynomial 2740:remainderPolynomial 2732:remainderPolynomial 2690:remainderPolynomial 2688:coefficient of the 2615:remainderPolynomial 2553:remainderPolynomial 2489:§ Preset to −1 2435:composite data type 7542:comp.arch.embedded 7448:10.1109/TC.2008.85 7363:msdn.microsoft.com 7188:Non-CRC checksums 5203: 4474: 4304:slice tables, then 4263:The difference is 4246:table = table_low 4008:<inttypes.h> 3835:The CRC polynomial 3758:The CRC polynomial 3551:rem  := (rem 3451:rem  := (rem 3368: 3304: 3266: 3240:For example, both 3227: 3187: 3140: 3113: 3080: 3051: 3031: 2985:§ Post-invert 2873: 2830:§ Post-invert 2702: 2678: 2648:to be padded with 2634: 2596: 2565: 2530:§ Post-invert 2412: 2388: 2352: 2291: 632: 600: 561: 534: 462: 397: 361: 341: 254: 245: 81: 7716:Texas Instruments 7442:(11): 1550–1560. 7239:978-0-7695-4673-5 7160:General category 7092:CRC-based framing 7067:One-pass checking 7014:propagation delay 7004: 7003: 6062: 6061: 5201: 5200: 4472: 4471: 3947:crc32: UInt32 3939:// Array of bytes 3936:data: Bytes 3898:is equivalent to 3628:big_endian_table 3307:{\displaystyle x} 3269:{\displaystyle x} 3190:{\displaystyle x} 3054:{\displaystyle n} 3034:{\displaystyle x} 2705:{\displaystyle x} 2568:{\displaystyle x} 2429:for computing an 2415:{\displaystyle x} 2391:{\displaystyle n} 2249: 2248: 2245: 2244: 1451: 1450: 374:The byte value 57 364:{\displaystyle x} 176:Computation of a 174: 173: 166: 148: 76: 60: 59: 36:a manual or guide 7790: 7764: 7747: 7730: 7729: 7724: 7723: 7713: 7702: 7696: 7694: 7688: 7685:cite tech report 7680: 7675: 7664: 7658: 7657: 7632:(4): 1110–1121. 7617: 7611: 7610: 7608: 7607: 7598:. Archived from 7565: 7559: 7558: 7556: 7555: 7529: 7523: 7522: 7514: 7508: 7507: 7496: 7490: 7489: 7487: 7481:. Archived from 7476: 7466: 7460: 7459: 7431: 7425: 7424: 7396: 7385: 7379: 7378: 7376: 7374: 7355: 7349: 7348: 7346: 7345: 7330: 7324: 7323: 7313: 7304:(8): 1008–1013. 7287: 7281: 7280: 7278: 7277: 7268:. Archived from 7261: 7252: 7251: 7213: 7183: 7119: 6998: 6995: 6992: 6989: 6986: 6983: 6980: 6977: 6974: 6971: 6968: 6965: 6962: 6959: 6956: 6953: 6950: 6947: 6944: 6941: 6938: 6935: 6932: 6929: 6926: 6923: 6920: 6917: 6914: 6911: 6908: 6905: 6902: 6899: 6896: 6893: 6890: 6887: 6884: 6881: 6878: 6875: 6872: 6869: 6866: 6863: 6860: 6857: 6854: 6851: 6848: 6845: 6842: 6839: 6836: 6833: 6830: 6827: 6824: 6821: 6818: 6815: 6812: 6809: 6806: 6803: 6800: 6797: 6794: 6791: 6788: 6785: 6782: 6779: 6776: 6773: 6770: 6767: 6764: 6761: 6758: 6755: 6752: 6749: 6746: 6743: 6740: 6737: 6728: 6725: 6722: 6719: 6716: 6713: 6710: 6707: 6704: 6701: 6698: 6695: 6692: 6689: 6686: 6683: 6680: 6677: 6674: 6671: 6668: 6665: 6662: 6659: 6656: 6653: 6650: 6647: 6644: 6641: 6638: 6635: 6632: 6629: 6626: 6623: 6620: 6617: 6614: 6611: 6608: 6605: 6602: 6599: 6596: 6593: 6590: 6587: 6584: 6581: 6578: 6575: 6572: 6569: 6566: 6563: 6560: 6557: 6554: 6551: 6548: 6545: 6542: 6539: 6536: 6533: 6530: 6527: 6524: 6521: 6518: 6515: 6512: 6509: 6506: 6503: 6500: 6497: 6494: 6491: 6488: 6485: 6482: 6479: 6476: 6473: 6470: 6064: 6056: 6053: 6050: 6047: 6044: 6041: 6038: 6035: 6032: 6029: 6026: 6023: 6020: 6017: 6014: 6011: 6008: 6005: 6002: 5999: 5996: 5993: 5990: 5987: 5984: 5981: 5978: 5975: 5972: 5969: 5966: 5963: 5960: 5957: 5954: 5951: 5948: 5945: 5942: 5939: 5936: 5933: 5930: 5927: 5924: 5921: 5918: 5915: 5912: 5909: 5906: 5903: 5900: 5891: 5888: 5885: 5882: 5879: 5876: 5873: 5870: 5867: 5864: 5861: 5858: 5855: 5852: 5849: 5846: 5843: 5840: 5837: 5834: 5831: 5828: 5825: 5822: 5819: 5816: 5813: 5810: 5807: 5804: 5801: 5798: 5795: 5792: 5789: 5786: 5783: 5780: 5777: 5774: 5771: 5768: 5765: 5762: 5759: 5756: 5753: 5750: 5747: 5744: 5741: 5738: 5206: 5195: 5192: 5189: 5186: 5183: 5180: 5177: 5174: 5171: 5168: 5165: 5162: 5159: 5156: 5153: 5150: 5147: 5144: 5141: 5138: 5135: 5132: 5129: 5126: 5123: 5120: 5117: 5114: 5111: 5108: 5105: 5102: 5099: 5096: 5093: 5090: 5087: 5084: 5081: 5078: 5075: 5072: 5069: 5066: 5063: 5060: 5057: 5054: 5051: 5048: 5045: 5042: 5039: 5036: 5027: 5024: 5021: 5018: 5015: 5012: 5009: 5006: 5003: 5000: 4997: 4994: 4991: 4988: 4985: 4982: 4979: 4976: 4973: 4970: 4967: 4964: 4961: 4958: 4955: 4952: 4949: 4946: 4943: 4940: 4937: 4934: 4931: 4928: 4925: 4922: 4919: 4916: 4913: 4910: 4907: 4904: 4901: 4898: 4895: 4892: 4477: 4355: 4325:no longer depend 4251: 4243: 4204: 4201: 4198: 4195: 4192: 4189: 4186: 4183: 4180: 4177: 4174: 4171: 4168: 4165: 4162: 4159: 4156: 4153: 4150: 4147: 4144: 4141: 4138: 4135: 4132: 4129: 4126: 4123: 4120: 4117: 4114: 4111: 4108: 4105: 4102: 4099: 4096: 4093: 4090: 4087: 4084: 4081: 4078: 4075: 4072: 4069: 4066: 4063: 4060: 4057: 4054: 4051: 4048: 4045: 4042: 4039: 4036: 4033: 4030: 4027: 4024: 4021: 4018: 4015: 4012: 4009: 4006: 3995: 3989: 3983: 3977: 3971: 3965: 3958: 3952: 3946: 3941: 3935: 3929: 3910:CRC-32 algorithm 3905: 3897: 3772:big_endian_table 3728: 3724: 3717: 3700: 3699: 3616: 3612: 3591: 3587: 3377: 3375: 3374: 3369: 3361: 3360: 3348: 3347: 3335: 3334: 3313: 3311: 3310: 3305: 3275: 3273: 3272: 3267: 3236: 3234: 3233: 3228: 3196: 3194: 3193: 3188: 3149: 3147: 3146: 3141: 3139: 3138: 3122: 3120: 3119: 3114: 3112: 3111: 3089: 3087: 3086: 3081: 3060: 3058: 3057: 3052: 3040: 3038: 3037: 3032: 3004:microcontrollers 2897: 2893: 2886: 2882: 2880: 2879: 2874: 2872: 2871: 2851: 2806:(coefficient of 2756: 2749: 2745: 2741: 2737: 2733: 2711: 2709: 2708: 2703: 2691: 2687: 2685: 2684: 2679: 2677: 2676: 2647: 2643: 2641: 2640: 2635: 2633: 2632: 2616: 2605: 2603: 2602: 2597: 2595: 2594: 2578: 2574: 2572: 2571: 2566: 2554: 2550: 2459: 2442: 2421: 2419: 2418: 2413: 2397: 2395: 2394: 2389: 2361: 2359: 2358: 2353: 2351: 2350: 2338: 2337: 2325: 2324: 2300: 2298: 2297: 2292: 2284: 2283: 2271: 2270: 1455: 661: 660: 649: 641: 639: 638: 633: 609: 607: 606: 601: 587: 586: 570: 568: 567: 562: 560: 559: 543: 541: 540: 535: 527: 526: 514: 513: 501: 500: 488: 487: 471: 469: 468: 463: 449: 448: 436: 435: 423: 422: 406: 404: 403: 398: 370: 368: 367: 362: 350: 348: 347: 342: 328: 327: 315: 314: 169: 162: 158: 155: 149: 147: 106: 70: 69: 62: 55: 52: 46: 34:is written like 27: 26: 19: 7798: 7797: 7793: 7792: 7791: 7789: 7788: 7787: 7768: 7767: 7752: 7741: 7738: 7733: 7721: 7719: 7711: 7705: 7703: 7699: 7681: 7673: 7666: 7665: 7661: 7619: 7618: 7614: 7605: 7603: 7567: 7566: 7562: 7553: 7551: 7531: 7530: 7526: 7516: 7515: 7511: 7498: 7497: 7493: 7485: 7474: 7468: 7467: 7463: 7433: 7432: 7428: 7413: 7394: 7387: 7386: 7382: 7372: 7370: 7357: 7356: 7352: 7343: 7341: 7332: 7331: 7327: 7289: 7288: 7284: 7275: 7273: 7263: 7262: 7255: 7240: 7215: 7214: 7210: 7206: 7178: 7158: 7138: 7117: 7109: 7100: 7069: 7060: 7009: 7000: 6999: 6996: 6993: 6990: 6987: 6984: 6981: 6978: 6975: 6972: 6969: 6966: 6963: 6960: 6957: 6954: 6951: 6948: 6945: 6942: 6939: 6936: 6933: 6930: 6927: 6924: 6921: 6918: 6915: 6912: 6909: 6906: 6903: 6900: 6897: 6894: 6891: 6888: 6885: 6882: 6879: 6876: 6873: 6870: 6867: 6864: 6861: 6858: 6855: 6852: 6849: 6846: 6843: 6840: 6837: 6834: 6831: 6828: 6825: 6822: 6819: 6816: 6813: 6810: 6807: 6804: 6801: 6798: 6795: 6792: 6789: 6786: 6783: 6780: 6777: 6774: 6771: 6768: 6765: 6762: 6759: 6756: 6753: 6750: 6747: 6744: 6741: 6738: 6735: 6730: 6729: 6726: 6723: 6720: 6717: 6714: 6711: 6708: 6705: 6702: 6699: 6696: 6693: 6690: 6687: 6684: 6681: 6678: 6675: 6672: 6669: 6666: 6663: 6660: 6657: 6654: 6651: 6648: 6645: 6642: 6639: 6636: 6633: 6630: 6627: 6624: 6621: 6618: 6615: 6612: 6609: 6606: 6603: 6600: 6597: 6594: 6591: 6588: 6585: 6582: 6579: 6576: 6573: 6570: 6567: 6564: 6561: 6558: 6555: 6552: 6549: 6546: 6543: 6540: 6537: 6534: 6531: 6528: 6525: 6522: 6519: 6516: 6513: 6510: 6507: 6504: 6501: 6498: 6495: 6492: 6489: 6486: 6483: 6480: 6477: 6474: 6471: 6468: 6462: 6456: 6455: 6451: 6449: 6447: 6443: 6439: 6437: 6433: 6429: 6427: 6423: 6419: 6417: 6413: 6409: 6407: 6403: 6399: 6397: 6393: 6389: 6387: 6383: 6379: 6377: 6373: 6369: 6365: 6361: 6357: 6353: 6349: 6345: 6341: 6337: 6333: 6331: 6329: 6322: 6321: 6317: 6313: 6309: 6305: 6301: 6297: 6293: 6289: 6287: 6285: 6281: 6277: 6273: 6271: 6267: 6263: 6259: 6257: 6255: 6251: 6247: 6245: 6243: 6239: 6235: 6233: 6231: 6227: 6223: 6221: 6219: 6215: 6211: 6209: 6207: 6203: 6199: 6197: 6195: 6191: 6187: 6185: 6183: 6179: 6177: 6172: 6170: 6166: 6162: 6158: 6154: 6150: 6146: 6142: 6138: 6134: 6130: 6126: 6122: 6118: 6114: 6110: 6058: 6057: 6054: 6051: 6048: 6045: 6042: 6039: 6036: 6033: 6030: 6027: 6024: 6021: 6018: 6015: 6012: 6009: 6006: 6003: 6000: 5997: 5994: 5991: 5988: 5985: 5982: 5979: 5976: 5973: 5970: 5967: 5964: 5961: 5958: 5955: 5952: 5949: 5946: 5943: 5940: 5937: 5934: 5931: 5928: 5925: 5922: 5919: 5916: 5913: 5910: 5907: 5904: 5901: 5898: 5893: 5892: 5889: 5886: 5883: 5880: 5877: 5874: 5871: 5868: 5865: 5862: 5859: 5856: 5853: 5850: 5847: 5844: 5841: 5838: 5835: 5832: 5829: 5826: 5823: 5820: 5817: 5814: 5811: 5808: 5805: 5802: 5799: 5796: 5793: 5790: 5787: 5784: 5781: 5778: 5775: 5772: 5769: 5766: 5763: 5760: 5757: 5754: 5751: 5748: 5745: 5742: 5739: 5736: 5730: 5724: 5723: 5719: 5715: 5713: 5709: 5705: 5703: 5699: 5695: 5693: 5689: 5685: 5683: 5679: 5677: 5673: 5669: 5665: 5663: 5659: 5655: 5651: 5649: 5645: 5641: 5637: 5635: 5631: 5627: 5625: 5621: 5617: 5615: 5611: 5607: 5605: 5601: 5597: 5595: 5591: 5587: 5583: 5579: 5577: 5573: 5569: 5565: 5563: 5561: 5557: 5553: 5549: 5547: 5545: 5541: 5537: 5533: 5531: 5529: 5522: 5521: 5517: 5513: 5511: 5509: 5507: 5503: 5499: 5495: 5493: 5491: 5489: 5485: 5481: 5477: 5475: 5473: 5471: 5467: 5463: 5459: 5455: 5453: 5451: 5447: 5443: 5441: 5439: 5435: 5431: 5429: 5427: 5423: 5419: 5417: 5415: 5411: 5407: 5403: 5401: 5397: 5393: 5389: 5385: 5383: 5379: 5375: 5371: 5369: 5365: 5361: 5357: 5355: 5351: 5349: 5345: 5341: 5337: 5333: 5329: 5325: 5321: 5314: 5312: 5308: 5304: 5300: 5296: 5292: 5288: 5284: 5280: 5276: 5272: 5268: 5264: 5260: 5256: 5252: 5197: 5196: 5193: 5190: 5187: 5184: 5181: 5178: 5175: 5172: 5169: 5166: 5163: 5160: 5157: 5154: 5151: 5148: 5145: 5142: 5139: 5136: 5133: 5130: 5127: 5124: 5121: 5118: 5115: 5112: 5109: 5106: 5103: 5100: 5097: 5094: 5091: 5088: 5085: 5082: 5079: 5076: 5073: 5070: 5067: 5064: 5061: 5058: 5055: 5052: 5049: 5046: 5043: 5040: 5037: 5034: 5029: 5028: 5025: 5022: 5019: 5016: 5013: 5010: 5007: 5004: 5001: 4998: 4995: 4992: 4989: 4986: 4983: 4980: 4977: 4974: 4971: 4968: 4965: 4962: 4959: 4956: 4953: 4950: 4947: 4944: 4941: 4938: 4935: 4932: 4929: 4926: 4923: 4920: 4917: 4914: 4911: 4908: 4905: 4902: 4899: 4896: 4893: 4890: 4884: 4878: 4877: 4873: 4869: 4865: 4861: 4857: 4853: 4849: 4845: 4841: 4837: 4833: 4829: 4825: 4821: 4817: 4813: 4809: 4805: 4803: 4799: 4795: 4791: 4787: 4783: 4779: 4775: 4771: 4767: 4763: 4761: 4759: 4755: 4751: 4747: 4743: 4739: 4737: 4733: 4729: 4725: 4723: 4721: 4717: 4713: 4709: 4705: 4703: 4699: 4695: 4691: 4689: 4687: 4680: 4679: 4675: 4671: 4669: 4667: 4663: 4659: 4655: 4653: 4651: 4647: 4643: 4639: 4637: 4635: 4631: 4627: 4623: 4619: 4617: 4613: 4609: 4605: 4601: 4597: 4593: 4589: 4585: 4578: 4576: 4572: 4568: 4564: 4560: 4556: 4552: 4548: 4465: 4461: 4457: 4453: 4449: 4443: 4439: 4435: 4424: 4420: 4416: 4412: 4408: 4402: 4398: 4394: 4383: 4372: 4361: 4349: 4329:data dependency 4245: 4237: 4211: 4206: 4205: 4202: 4199: 4196: 4193: 4190: 4187: 4184: 4181: 4178: 4175: 4172: 4169: 4166: 4163: 4160: 4157: 4154: 4151: 4148: 4145: 4142: 4139: 4136: 4133: 4130: 4127: 4124: 4121: 4118: 4115: 4112: 4109: 4106: 4103: 4100: 4097: 4094: 4091: 4088: 4085: 4082: 4079: 4076: 4073: 4070: 4067: 4064: 4061: 4058: 4055: 4052: 4049: 4046: 4043: 4040: 4037: 4034: 4031: 4028: 4025: 4022: 4019: 4016: 4013: 4010: 4007: 4004: 3999: 3997: 3991: 3985: 3984: 3979: 3973: 3967: 3961: 3960: 3954: 3953: 3948: 3942: 3937: 3931: 3925: 3912: 3899: 3895: 3885: 3847:is the value of 3804: 3770:is the value of 3726: 3722: 3712:table == table 3711: 3707: 3697: 3695: 3676:archive formats 3649: 3614: 3610: 3603: 3598: 3589: 3585: 3575: 3524:string 3479: 3352: 3339: 3326: 3321: 3320: 3296: 3295: 3258: 3257: 3210: 3209: 3179: 3178: 3163:8B/10B encoding 3130: 3125: 3124: 3097: 3092: 3091: 3063: 3062: 3043: 3042: 3041:, and the last 3023: 3022: 3012: 2993: 2961:coefficient of 2895: 2891: 2884: 2863: 2858: 2857: 2849: 2838: 2757:with the first 2754: 2747: 2743: 2739: 2735: 2731: 2694: 2693: 2689: 2662: 2657: 2656: 2645: 2624: 2619: 2618: 2614: 2586: 2581: 2580: 2579:is done to the 2576: 2557: 2556: 2552: 2548: 2538: 2518:coefficient of 2455: 2438: 2404: 2403: 2380: 2379: 2376: 2369: 2342: 2329: 2316: 2311: 2310: 2308: 2275: 2262: 2257: 2256: 615: 614: 578: 573: 572: 551: 546: 545: 518: 505: 492: 479: 474: 473: 440: 427: 414: 409: 408: 380: 379: 377: 353: 352: 319: 306: 301: 300: 294: 286: 282: 273: 266: 170: 159: 153: 150: 107: 105: 83: 71: 67: 56: 50: 47: 40: 28: 24: 17: 12: 11: 5: 7796: 7794: 7786: 7785: 7780: 7770: 7769: 7766: 7765: 7749: 7748: 7737: 7736:External links 7734: 7732: 7731: 7697: 7659: 7612: 7560: 7524: 7509: 7491: 7488:on 2012-07-22. 7461: 7426: 7411: 7380: 7350: 7325: 7282: 7253: 7238: 7207: 7205: 7202: 7201: 7200: 7195: 7186: 7185: 7172: 7167: 7157: 7154: 7137: 7134: 7108: 7105: 7099: 7096: 7068: 7065: 7059: 7056: 7008: 7005: 7002: 7001: 6734: 6731: 6467: 6464: 6458: 6457: 6453: 6450: 6448: 6445: 6441: 6438: 6435: 6431: 6428: 6425: 6421: 6418: 6415: 6411: 6408: 6405: 6401: 6398: 6395: 6391: 6388: 6385: 6381: 6378: 6375: 6371: 6367: 6363: 6359: 6355: 6351: 6347: 6343: 6339: 6335: 6332: 6330: 6327: 6325: 6323: 6319: 6315: 6311: 6307: 6303: 6299: 6295: 6291: 6288: 6286: 6283: 6279: 6275: 6272: 6269: 6265: 6261: 6258: 6256: 6253: 6249: 6246: 6244: 6241: 6237: 6234: 6232: 6229: 6225: 6222: 6220: 6217: 6213: 6210: 6208: 6205: 6201: 6198: 6196: 6193: 6189: 6186: 6184: 6181: 6178: 6176: 6175: 6173: 6168: 6164: 6160: 6156: 6152: 6148: 6144: 6140: 6136: 6132: 6128: 6124: 6120: 6116: 6112: 6108: 6106: 6103: 6102: 6100:(LSBF/reverse) 6096: 6090: 6089:Coefficients: 6086: 6085: 6068: 6060: 6059: 5897: 5894: 5735: 5732: 5726: 5725: 5721: 5717: 5714: 5711: 5707: 5704: 5701: 5697: 5694: 5691: 5687: 5684: 5681: 5678: 5675: 5671: 5667: 5664: 5661: 5657: 5653: 5650: 5647: 5643: 5639: 5636: 5633: 5629: 5626: 5623: 5619: 5616: 5613: 5609: 5606: 5603: 5599: 5596: 5593: 5589: 5585: 5581: 5578: 5575: 5571: 5567: 5564: 5562: 5559: 5555: 5551: 5548: 5546: 5543: 5539: 5535: 5532: 5530: 5527: 5525: 5523: 5519: 5515: 5512: 5510: 5508: 5505: 5501: 5497: 5494: 5492: 5490: 5487: 5483: 5479: 5476: 5474: 5472: 5469: 5465: 5461: 5457: 5454: 5452: 5449: 5445: 5442: 5440: 5437: 5433: 5430: 5428: 5425: 5421: 5418: 5416: 5413: 5409: 5405: 5402: 5399: 5395: 5391: 5387: 5384: 5381: 5377: 5373: 5370: 5367: 5363: 5359: 5356: 5353: 5350: 5347: 5343: 5339: 5335: 5331: 5327: 5323: 5319: 5317: 5315: 5310: 5306: 5302: 5298: 5294: 5290: 5286: 5282: 5278: 5274: 5270: 5266: 5262: 5258: 5254: 5250: 5248: 5245: 5244: 5242:(LSBF/reverse) 5238: 5232: 5231:Coefficients: 5228: 5227: 5225:(CRC-16-CCITT) 5210: 5199: 5198: 5033: 5030: 4889: 4886: 4880: 4879: 4875: 4871: 4867: 4863: 4859: 4855: 4851: 4847: 4843: 4839: 4835: 4831: 4827: 4823: 4819: 4815: 4811: 4807: 4804: 4801: 4797: 4793: 4789: 4785: 4781: 4777: 4773: 4769: 4765: 4762: 4760: 4757: 4753: 4749: 4745: 4741: 4738: 4735: 4731: 4727: 4724: 4722: 4719: 4715: 4711: 4707: 4704: 4701: 4697: 4693: 4690: 4688: 4685: 4683: 4681: 4677: 4673: 4670: 4668: 4665: 4661: 4657: 4654: 4652: 4649: 4645: 4641: 4638: 4636: 4633: 4629: 4625: 4621: 4618: 4615: 4611: 4607: 4603: 4599: 4595: 4591: 4587: 4583: 4581: 4579: 4574: 4570: 4566: 4562: 4558: 4554: 4550: 4546: 4544: 4541: 4540: 4530: 4520: 4519:Coefficients: 4516: 4515: 4498: 4481: 4470: 4469: 4463: 4459: 4455: 4451: 4447: 4444: 4441: 4437: 4433: 4429: 4428: 4422: 4418: 4414: 4410: 4406: 4403: 4400: 4396: 4392: 4388: 4387: 4384: 4381: 4377: 4376: 4373: 4370: 4366: 4365: 4362: 4359: 4348: 4345: 4313: 4312: 4305: 4298: 4238:table = table 4210: 4207: 4003: 3924: 3911: 3908: 3892: 3891: 3812: 3811: 3810: 3731: 3706: 3703: 3656: 3655: 3619: 3602: 3599: 3597: 3594: 3582: 3581: 3487: 3486: 3485: 3380: 3367: 3364: 3359: 3355: 3351: 3346: 3342: 3338: 3333: 3329: 3303: 3265: 3226: 3223: 3220: 3217: 3186: 3137: 3133: 3110: 3107: 3104: 3100: 3079: 3076: 3073: 3070: 3050: 3030: 3011: 3008: 3000: 2999: 2940:polynomialForm 2904: 2870: 2866: 2845: 2844: 2763: 2701: 2675: 2672: 2669: 2665: 2631: 2627: 2593: 2589: 2564: 2545: 2544: 2508:+ bitString * 2482:(bitString) 2480:polynomialForm 2466: 2411: 2400:shift register 2387: 2375: 2374:Implementation 2372: 2367: 2349: 2345: 2341: 2336: 2332: 2328: 2323: 2319: 2306: 2290: 2287: 2282: 2278: 2274: 2269: 2265: 2247: 2246: 2243: 2242: 2239: 2236: 2233: 2230: 2227: 2224: 2221: 2218: 2215: 2212: 2209: 2206: 2203: 2200: 2197: 2194: 2190: 2189: 2186: 2183: 2180: 2177: 2174: 2171: 2168: 2165: 2162: 2159: 2157: 2155: 2153: 2151: 2149: 2147: 2144: 2143: 2140: 2137: 2134: 2131: 2128: 2125: 2122: 2119: 2116: 2113: 2110: 2107: 2104: 2101: 2098: 2095: 2091: 2090: 2087: 2084: 2081: 2078: 2075: 2072: 2069: 2066: 2063: 2060: 2058: 2056: 2054: 2052: 2050: 2047: 2046: 2043: 2040: 2037: 2034: 2031: 2028: 2025: 2022: 2019: 2016: 2013: 2010: 2007: 2004: 2001: 1998: 1994: 1993: 1990: 1987: 1984: 1981: 1978: 1975: 1972: 1969: 1966: 1963: 1961: 1959: 1957: 1955: 1952: 1951: 1948: 1945: 1942: 1939: 1936: 1933: 1930: 1927: 1924: 1921: 1918: 1915: 1912: 1909: 1906: 1903: 1899: 1898: 1895: 1892: 1889: 1886: 1883: 1880: 1877: 1874: 1871: 1868: 1866: 1864: 1862: 1859: 1858: 1855: 1852: 1849: 1846: 1843: 1840: 1837: 1834: 1831: 1828: 1825: 1822: 1819: 1816: 1813: 1810: 1806: 1805: 1802: 1799: 1796: 1793: 1790: 1787: 1784: 1781: 1778: 1775: 1773: 1771: 1768: 1767: 1764: 1761: 1758: 1755: 1752: 1749: 1746: 1743: 1740: 1737: 1734: 1731: 1728: 1725: 1722: 1719: 1715: 1714: 1711: 1708: 1705: 1702: 1699: 1696: 1693: 1690: 1687: 1684: 1682: 1679: 1678: 1675: 1672: 1669: 1666: 1663: 1660: 1657: 1654: 1651: 1648: 1645: 1642: 1639: 1636: 1633: 1630: 1626: 1625: 1622: 1619: 1616: 1613: 1610: 1607: 1604: 1601: 1598: 1595: 1592: 1591: 1588: 1585: 1582: 1579: 1576: 1573: 1570: 1567: 1564: 1561: 1558: 1555: 1552: 1549: 1546: 1543: 1539: 1538: 1535: 1532: 1529: 1526: 1523: 1520: 1517: 1514: 1511: 1507: 1506: 1503: 1500: 1497: 1494: 1491: 1488: 1485: 1482: 1479: 1476: 1473: 1470: 1467: 1464: 1461: 1458: 1452: 1449: 1448: 1445: 1442: 1439: 1436: 1433: 1430: 1427: 1424: 1421: 1418: 1415: 1412: 1409: 1406: 1403: 1400: 1396: 1395: 1392: 1389: 1386: 1383: 1380: 1377: 1374: 1371: 1368: 1365: 1363: 1361: 1359: 1357: 1355: 1353: 1350: 1349: 1346: 1343: 1340: 1337: 1334: 1331: 1328: 1325: 1322: 1319: 1316: 1313: 1310: 1307: 1304: 1301: 1297: 1296: 1293: 1290: 1287: 1284: 1281: 1278: 1275: 1272: 1269: 1266: 1264: 1262: 1260: 1258: 1256: 1253: 1252: 1249: 1246: 1243: 1240: 1237: 1234: 1231: 1228: 1225: 1222: 1219: 1216: 1213: 1210: 1207: 1204: 1200: 1199: 1196: 1193: 1190: 1187: 1184: 1181: 1178: 1175: 1172: 1169: 1167: 1165: 1163: 1161: 1158: 1157: 1154: 1151: 1148: 1145: 1142: 1139: 1136: 1133: 1130: 1127: 1124: 1121: 1118: 1115: 1112: 1109: 1105: 1104: 1101: 1098: 1095: 1092: 1089: 1086: 1083: 1080: 1077: 1074: 1072: 1070: 1068: 1065: 1064: 1061: 1058: 1055: 1052: 1049: 1046: 1043: 1040: 1037: 1034: 1031: 1028: 1025: 1022: 1019: 1016: 1012: 1011: 1008: 1005: 1002: 999: 996: 993: 990: 987: 984: 981: 979: 977: 974: 973: 970: 967: 964: 961: 958: 955: 952: 949: 946: 943: 940: 937: 934: 931: 928: 925: 921: 920: 917: 914: 911: 908: 905: 902: 899: 896: 893: 890: 888: 885: 884: 881: 878: 875: 872: 869: 866: 863: 860: 857: 854: 851: 848: 845: 842: 839: 836: 832: 831: 828: 825: 822: 819: 816: 813: 810: 807: 804: 801: 798: 797: 794: 791: 788: 785: 782: 779: 776: 773: 770: 767: 764: 761: 758: 755: 752: 749: 745: 744: 741: 738: 735: 732: 729: 726: 723: 720: 717: 713: 712: 709: 706: 703: 700: 697: 694: 691: 688: 685: 682: 679: 676: 673: 670: 667: 664: 657: 656: 653: 631: 628: 625: 622: 599: 596: 593: 590: 585: 581: 558: 554: 533: 530: 525: 521: 517: 512: 508: 504: 499: 495: 491: 486: 482: 461: 458: 455: 452: 447: 443: 439: 434: 430: 426: 421: 417: 396: 393: 390: 387: 375: 360: 340: 337: 334: 331: 326: 322: 318: 313: 309: 292: 284: 280: 265: 262: 233:shift register 198:shift register 172: 171: 74: 72: 65: 58: 57: 31: 29: 22: 15: 13: 10: 9: 6: 4: 3: 2: 7795: 7784: 7783:Finite fields 7781: 7779: 7776: 7775: 7773: 7762: 7761: 7756: 7751: 7750: 7745: 7740: 7739: 7735: 7728: 7717: 7710: 7709: 7701: 7698: 7692: 7686: 7679: 7672: 7671: 7663: 7660: 7655: 7651: 7647: 7643: 7639: 7635: 7631: 7627: 7623: 7616: 7613: 7602:on 2009-01-30 7601: 7597: 7593: 7589: 7585: 7581: 7577: 7576: 7571: 7564: 7561: 7550: 7547: 7543: 7539: 7535: 7528: 7525: 7520: 7513: 7510: 7505: 7501: 7495: 7492: 7484: 7480: 7473: 7472: 7465: 7462: 7457: 7453: 7449: 7445: 7441: 7437: 7430: 7427: 7422: 7418: 7414: 7412:0-7695-2373-0 7408: 7404: 7400: 7393: 7392: 7384: 7381: 7368: 7364: 7360: 7354: 7351: 7339: 7335: 7329: 7326: 7321: 7317: 7312: 7307: 7303: 7299: 7298: 7293: 7286: 7283: 7272:on 2006-09-27 7271: 7267: 7260: 7258: 7254: 7249: 7245: 7241: 7235: 7231: 7227: 7223: 7219: 7212: 7209: 7203: 7199: 7196: 7194: 7191: 7190: 7189: 7181: 7176: 7173: 7171: 7168: 7166: 7163: 7162: 7161: 7155: 7153: 7149: 7145: 7143: 7135: 7133: 7129: 7127: 7123: 7113: 7106: 7104: 7097: 7095: 7093: 7089: 7084: 7082: 7078: 7073: 7066: 7064: 7057: 7055: 7052: 7050: 7046: 7042: 7038: 7034: 7030: 7026: 7022: 7017: 7015: 7006: 6732: 6465: 6460: 6324: 6174: 6105: 6104: 6101: 6097: 6095: 6094:(MSBF/normal) 6091: 6088: 6087: 6084: 6083:(CRC-16-ANSI) 6080: 6076: 6072: 6066: 6065: 5895: 5733: 5728: 5524: 5316: 5247: 5246: 5243: 5239: 5237: 5236:(MSBF/normal) 5233: 5230: 5229: 5226: 5222: 5218: 5214: 5208: 5207: 5031: 4887: 4882: 4682: 4580: 4543: 4542: 4539: 4537: 4531: 4529: 4527: 4521: 4518: 4517: 4514: 4510: 4506: 4502: 4499: 4497: 4494: 4490: 4486: 4482: 4479: 4478: 4468: 4445: 4431: 4430: 4427: 4404: 4390: 4389: 4385: 4379: 4378: 4374: 4368: 4367: 4363: 4357: 4356: 4353: 4346: 4344: 4340: 4338: 4334: 4330: 4326: 4321: 4319: 4310: 4306: 4303: 4299: 4296: 4292: 4291: 4290: 4288: 4283: 4280: 4275: 4272: 4268: 4266: 4261: 4259: 4253: 4249: 4241: 4235: 4229: 4226: 4224: 4220: 4216: 4208: 4001: 3994: 3988: 3982: 3976: 3970: 3964: 3957: 3951: 3945: 3940: 3934: 3928: 3923: 3921: 3917: 3909: 3907: 3903: 3890: 3887: 3886: 3883: 3879: 3875: 3871: 3867: 3863: 3859: 3856: 3852: 3848: 3844: 3840: 3836: 3832: 3828: 3824: 3820: 3816: 3809: 3806: 3805: 3802: 3798: 3794: 3790: 3786: 3782: 3779: 3775: 3771: 3767: 3763: 3759: 3755: 3751: 3747: 3743: 3739: 3735: 3730: 3719: 3715: 3704: 3702: 3691: 3688: 3684: 3681: 3677: 3673: 3669: 3665: 3661: 3654: 3651: 3650: 3647: 3643: 3639: 3635: 3631: 3627: 3623: 3618: 3608: 3600: 3595: 3593: 3580: 3577: 3576: 3573: 3570: 3566: 3562: 3558: 3554: 3550: 3546: 3542: 3539: 3535: 3531: 3527: 3523: 3519: 3515: 3511: 3508: 3504: 3500: 3496: 3493: 3490: 3484: 3481: 3480: 3477: 3474: 3470: 3466: 3462: 3458: 3454: 3450: 3446: 3442: 3439: 3435: 3431: 3427: 3424: 3420: 3416: 3412: 3408: 3404: 3401: 3397: 3393: 3389: 3386: 3383: 3379: 3365: 3362: 3357: 3353: 3349: 3344: 3340: 3336: 3331: 3327: 3318: 3301: 3292: 3290: 3285: 3283: 3279: 3263: 3255: 3251: 3247: 3243: 3238: 3221: 3215: 3207: 3203: 3198: 3184: 3176: 3172: 3168: 3164: 3160: 3156: 3151: 3135: 3131: 3108: 3105: 3102: 3098: 3074: 3068: 3048: 3028: 3020: 3017: 3009: 3007: 3005: 2998: 2995: 2994: 2991: 2988: 2986: 2980: 2976: 2972: 2968: 2964: 2960: 2957: 2953: 2949: 2945: 2941: 2938: 2934: 2930: 2926: 2923: 2921: 2915: 2911: 2907: 2903: 2901: 2888: 2868: 2864: 2855: 2843: 2840: 2839: 2836: 2833: 2831: 2825: 2821: 2817: 2813: 2809: 2805: 2801: 2798:(bitstring * 2797: 2793: 2789: 2785: 2782: 2780: 2774: 2770: 2766: 2762: 2760: 2751: 2729: 2725: 2720: 2718: 2713: 2699: 2673: 2670: 2667: 2663: 2653: 2651: 2629: 2625: 2612: 2607: 2591: 2587: 2562: 2543: 2540: 2539: 2536: 2533: 2531: 2525: 2521: 2517: 2514: 2511: 2507: 2503: 2499: 2495: 2492: 2490: 2485: 2481: 2477: 2473: 2469: 2465: 2463: 2458: 2453: 2450: 2447:generating a 2446: 2441: 2436: 2432: 2428: 2423: 2409: 2401: 2385: 2373: 2371: 2365: 2347: 2343: 2339: 2334: 2330: 2326: 2321: 2317: 2304: 2288: 2285: 2280: 2276: 2272: 2267: 2263: 2253: 2240: 2237: 2234: 2231: 2228: 2225: 2222: 2219: 2216: 2213: 2210: 2207: 2204: 2201: 2198: 2195: 2192: 2191: 2187: 2184: 2181: 2178: 2175: 2172: 2169: 2166: 2163: 2160: 2158: 2156: 2154: 2152: 2150: 2148: 2146: 2145: 2141: 2138: 2135: 2132: 2129: 2126: 2123: 2120: 2117: 2114: 2111: 2108: 2105: 2102: 2099: 2096: 2093: 2092: 2088: 2085: 2082: 2079: 2076: 2073: 2070: 2067: 2064: 2061: 2059: 2057: 2055: 2053: 2051: 2049: 2048: 2044: 2041: 2038: 2035: 2032: 2029: 2026: 2023: 2020: 2017: 2014: 2011: 2008: 2005: 2002: 1999: 1996: 1995: 1991: 1988: 1985: 1982: 1979: 1976: 1973: 1970: 1967: 1964: 1962: 1960: 1958: 1956: 1954: 1953: 1949: 1946: 1943: 1940: 1937: 1934: 1931: 1928: 1925: 1922: 1919: 1916: 1913: 1910: 1907: 1904: 1901: 1900: 1896: 1893: 1890: 1887: 1884: 1881: 1878: 1875: 1872: 1869: 1867: 1865: 1863: 1861: 1860: 1856: 1853: 1850: 1847: 1844: 1841: 1838: 1835: 1832: 1829: 1826: 1823: 1820: 1817: 1814: 1811: 1808: 1807: 1803: 1800: 1797: 1794: 1791: 1788: 1785: 1782: 1779: 1776: 1774: 1772: 1770: 1769: 1765: 1762: 1759: 1756: 1753: 1750: 1747: 1744: 1741: 1738: 1735: 1732: 1729: 1726: 1723: 1720: 1717: 1716: 1712: 1709: 1706: 1703: 1700: 1697: 1694: 1691: 1688: 1685: 1683: 1681: 1680: 1676: 1673: 1670: 1667: 1664: 1661: 1658: 1655: 1652: 1649: 1646: 1643: 1640: 1637: 1634: 1631: 1628: 1627: 1623: 1620: 1617: 1614: 1611: 1608: 1605: 1602: 1599: 1596: 1594: 1593: 1589: 1586: 1583: 1580: 1577: 1574: 1571: 1568: 1565: 1562: 1559: 1556: 1553: 1550: 1547: 1544: 1541: 1540: 1536: 1533: 1530: 1527: 1524: 1521: 1518: 1515: 1512: 1509: 1508: 1504: 1501: 1498: 1495: 1492: 1489: 1486: 1483: 1480: 1477: 1474: 1471: 1468: 1465: 1462: 1459: 1457: 1456: 1453: 1446: 1443: 1440: 1437: 1434: 1431: 1428: 1425: 1422: 1419: 1416: 1413: 1410: 1407: 1404: 1401: 1398: 1397: 1393: 1390: 1387: 1384: 1381: 1378: 1375: 1372: 1369: 1366: 1364: 1362: 1360: 1358: 1356: 1354: 1352: 1351: 1347: 1344: 1341: 1338: 1335: 1332: 1329: 1326: 1323: 1320: 1317: 1314: 1311: 1308: 1305: 1302: 1299: 1298: 1294: 1291: 1288: 1285: 1282: 1279: 1276: 1273: 1270: 1267: 1265: 1263: 1261: 1259: 1257: 1255: 1254: 1250: 1247: 1244: 1241: 1238: 1235: 1232: 1229: 1226: 1223: 1220: 1217: 1214: 1211: 1208: 1205: 1202: 1201: 1197: 1194: 1191: 1188: 1185: 1182: 1179: 1176: 1173: 1170: 1168: 1166: 1164: 1162: 1160: 1159: 1155: 1152: 1149: 1146: 1143: 1140: 1137: 1134: 1131: 1128: 1125: 1122: 1119: 1116: 1113: 1110: 1107: 1106: 1102: 1099: 1096: 1093: 1090: 1087: 1084: 1081: 1078: 1075: 1073: 1071: 1069: 1067: 1066: 1062: 1059: 1056: 1053: 1050: 1047: 1044: 1041: 1038: 1035: 1032: 1029: 1026: 1023: 1020: 1017: 1014: 1013: 1009: 1006: 1003: 1000: 997: 994: 991: 988: 985: 982: 980: 978: 976: 975: 971: 968: 965: 962: 959: 956: 953: 950: 947: 944: 941: 938: 935: 932: 929: 926: 923: 922: 918: 915: 912: 909: 906: 903: 900: 897: 894: 891: 889: 887: 886: 882: 879: 876: 873: 870: 867: 864: 861: 858: 855: 852: 849: 846: 843: 840: 837: 834: 833: 829: 826: 823: 820: 817: 814: 811: 808: 805: 802: 800: 799: 795: 792: 789: 786: 783: 780: 777: 774: 771: 768: 765: 762: 759: 756: 753: 750: 747: 746: 742: 739: 736: 733: 730: 727: 724: 721: 718: 715: 714: 710: 707: 704: 701: 698: 695: 692: 689: 686: 683: 680: 677: 674: 671: 668: 665: 663: 662: 659: 658: 654: 651: 650: 647: 645: 626: 620: 611: 594: 588: 583: 579: 556: 552: 531: 528: 523: 519: 515: 510: 506: 502: 497: 493: 489: 484: 480: 459: 456: 453: 450: 445: 441: 437: 432: 428: 424: 419: 415: 391: 385: 372: 358: 338: 335: 332: 329: 324: 320: 316: 311: 307: 299:) polynomial 298: 290: 278: 271: 263: 261: 259: 249: 242: 238: 234: 230: 225: 221: 219: 215: 211: 207: 203: 199: 195: 191: 187: 186:long division 183: 179: 168: 165: 157: 154:February 2023 146: 143: 139: 136: 132: 129: 125: 122: 118: 115: –  114: 110: 109:Find sources: 103: 99: 95: 91: 87: 80: 73: 64: 63: 54: 51:February 2023 44: 39: 37: 32:This article 30: 21: 20: 7758: 7726: 7720:, retrieved 7707: 7700: 7677: 7669: 7662: 7629: 7625: 7615: 7604:. Retrieved 7600:the original 7579: 7573: 7563: 7552:. Retrieved 7527: 7512: 7503: 7494: 7483:the original 7470: 7464: 7439: 7435: 7429: 7390: 7383: 7371:. Retrieved 7362: 7353: 7342:. Retrieved 7340:. 2003-11-10 7328: 7301: 7295: 7285: 7274:. Retrieved 7270:the original 7221: 7211: 7187: 7179: 7159: 7150: 7146: 7141: 7139: 7130: 7125: 7121: 7114: 7110: 7107:Preset to −1 7101: 7098:CRC variants 7087: 7085: 7080: 7076: 7074: 7070: 7061: 7053: 7048: 7044: 7040: 7036: 7032: 7028: 7024: 7020: 7018: 7010: 6099: 6093: 6082: 6078: 6074: 6070: 6067:Polynomial: 5241: 5235: 5224: 5220: 5216: 5212: 5209:Polynomial: 4533: 4523: 4512: 4508: 4504: 4500: 4495: 4492: 4491:+ 1) × 4488: 4484: 4480:Polynomial: 4467:(parity bit) 4466: 4426:(parity bit) 4425: 4350: 4341: 4337:continuously 4336: 4332: 4324: 4322: 4317: 4314: 4308: 4301: 4294: 4286: 4284: 4278: 4276: 4273: 4269: 4262: 4257: 4254: 4247: 4239: 4230: 4227: 4225:processors. 4218: 4214: 4212: 3998: 3992: 3986: 3980: 3974: 3968: 3962: 3955: 3949: 3943: 3938: 3932: 3926: 3913: 3901: 3893: 3888: 3881: 3877: 3873: 3869: 3865: 3861: 3857: 3854: 3850: 3846: 3842: 3838: 3834: 3830: 3826: 3822: 3818: 3814: 3807: 3800: 3796: 3792: 3788: 3784: 3780: 3777: 3773: 3769: 3765: 3761: 3757: 3753: 3749: 3745: 3741: 3737: 3736:i := 1 3733: 3720: 3713: 3708: 3692: 3683:image format 3659: 3657: 3652: 3645: 3641: 3637: 3633: 3629: 3625: 3621: 3607:lookup table 3604: 3583: 3578: 3571: 3568: 3564: 3560: 3556: 3552: 3548: 3544: 3540: 3537: 3533: 3529: 3525: 3521: 3517: 3513: 3509: 3506: 3502: 3498: 3494: 3491: 3488: 3482: 3475: 3472: 3468: 3464: 3460: 3456: 3452: 3448: 3444: 3440: 3437: 3433: 3429: 3425: 3422: 3418: 3414: 3410: 3406: 3402: 3399: 3395: 3391: 3387: 3384: 3381: 3293: 3286: 3278:floppy disks 3239: 3206:burst errors 3199: 3152: 3013: 3001: 2996: 2989: 2982: 2978: 2974: 2970: 2966: 2962: 2958: 2955: 2951: 2947: 2943: 2939: 2936: 2932: 2928: 2924: 2917: 2913: 2909: 2905: 2889: 2853: 2846: 2841: 2834: 2827: 2823: 2819: 2815: 2811: 2807: 2803: 2799: 2795: 2791: 2787: 2783: 2776: 2772: 2768: 2764: 2758: 2752: 2721: 2716: 2714: 2654: 2649: 2617:so that the 2610: 2608: 2546: 2541: 2534: 2527: 2523: 2519: 2515: 2512: 2509: 2505: 2501: 2497: 2493: 2486: 2483: 2479: 2475: 2471: 2467: 2462:exclusive OR 2456: 2448: 2439: 2430: 2424: 2377: 2363: 2302: 2254: 2250: 612: 373: 283:, decimal 87 274: 255: 240: 194:exclusive or 175: 160: 151: 141: 134: 127: 120: 108: 48: 41:Please help 33: 7136:Post-invert 6463:fragments: 5731:fragments: 4885:fragments: 4223:superscalar 4188:0xFFFFFFFFu 4113:lookupIndex 4089:data_length 4056:0xFFFFFFFFu 4038:data_length 3916:memoization 3803:i < 256 3588:before the 3547:0x0001 { 3447:0x8000 { 3319:polynomial 3282:hard drives 3254:serial port 2771:bitString, 2728:associative 2724:commutative 2652:zero bits. 2474:bitString, 2445:constructor 289:hexadecimal 214:parallelism 90:independent 7772:Categories 7722:2016-02-16 7606:2016-02-16 7584:Armonk, NY 7554:2016-02-16 7373:4 November 7344:2016-02-16 7276:2016-02-16 7204:References 4250:table_high 3878:rightshift 3843:rightShift 3833:0x8408 // 3827:rightShift 3756:0x1021 // 3674:and other 3638:rightShift 3634:rightShift 3565:rightShift 3553:rightShift 3536:8 { 3499:byte array 3436:8 { 3392:byte array 3016:bit serial 2910:byte array 2802:) 2449:Polynomial 2427:pseudocode 258:endianness 208:) through 206:obfuscated 202:algorithms 124:newspapers 98:redirected 7654:250472783 7646:0018-9340 7538:Newsgroup 7456:206624854 6167:← r 6163:← r 6159:← r 6155:← r 6151:← r 6147:← r 6143:← r 6139:← r 6135:← r 6131:← r 6127:← r 6123:← r 6119:← r 6115:← r 6111:← r 5309:← r 5305:← r 5301:← r 5297:← r 5293:← r 5289:← r 5285:← r 5281:← r 5277:← r 5273:← r 5269:← r 5265:← r 5261:← r 5257:← r 5253:← r 4573:← r 4569:← r 4565:← r 4561:← r 4557:← r 4553:← r 4549:← r 4538:/reverse) 3930:CRC32 3884:i > 0 3797:leftshift 3766:leftShift 3750:leftShift 3622:leftShift 3465:leftShift 3453:leftShift 3421:(n-8)) 3419:leftShift 3280:and most 3106:− 2769:bit array 2746:with the 2736:bitString 2671:− 2646:bitString 2577:bitString 2549:bitString 2472:bit array 237:XOR gates 88:that are 7421:10308354 7367:Archived 7248:27306826 7193:Adler-32 7156:See also 6991:>> 6973:<< 6955:<< 6937:>> 6916:<< 6871:>> 6844:>> 6817:>> 6757:uint16_t 6721:<< 6697:<< 6679:<< 6658:<< 6613:>> 6586:>> 6559:>> 6532:>> 6490:uint16_t 6171:← 6049:>> 6031:<< 6013:<< 5995:>> 5974:<< 5920:uint16_t 5884:<< 5866:<< 5842:<< 5821:>> 5794:>> 5758:uint16_t 5313:← 5188:>> 5170:>> 5143:<< 5125:<< 5107:<< 5020:<< 5002:<< 4981:>> 4963:>> 4577:← 4528:/normal) 4307:XOR the 4167:CRCTable 4155:>> 4110:uint32_t 4047:uint32_t 4014:uint32_t 4005:#include 3963:for each 3927:Function 3664:Ethernet 3617:) with: 3501:string, 3495:function 3417:(string 3394:string, 3388:function 3246:ethernet 3242:IEEE 802 3175:software 3019:hardware 2912:string, 2906:function 2852:is only 2765:function 2468:function 7590:: 705. 7546:Usenet: 7540::  7320:5363350 6736:uint8_t 6469:uint8_t 6098:0xa001 6092:0x8005 5899:uint8_t 5737:uint8_t 5240:0x8408 5234:0x1021 5035:uint8_t 4891:uint8_t 4458:+ … + s 4417:+ … + e 4318:exceeds 4260:table? 4026:uint8_t 3944:Output: 3169:-style 2954:8 { 264:Example 188:of the 138:scholar 102:deleted 7760:GitHub 7652:  7644:  7548:  7454:  7419:  7409:  7318:  7246:  7236:  7175:Parity 7081:before 6461:C code 5729:C code 4883:C code 4333:before 4279:equals 4194:return 4068:size_t 4035:size_t 3996:crc32 3993:return 3933:Input: 3817:{ 3740:{ 3678:, and 3660:CRC-32 3586:string 3574:rem } 3572:return 3478:rem } 3476:return 3289:XMODEM 3250:RS-232 3248:) and 3167:RS-232 2990:return 2835:return 2535:return 2452:object 644:borrow 212:-wise 190:binary 140:  133:  126:  119:  111:  94:merged 7712:(PDF) 7674:(PDF) 7650:S2CID 7582:(6). 7486:(PDF) 7479:Intel 7475:(PDF) 7452:S2CID 7417:S2CID 7395:(PDF) 7316:S2CID 7244:S2CID 6889:& 6631:& 4532:0x8c 4242:table 4197:crc32 4182:crc32 4152:crc32 4143:crc32 4134:& 4122:crc32 4107:const 4050:crc32 4023:const 4017:CRC32 3972:data 3966:byte 3896:i + j 3882:while 3851:; let 3801:while 3774:; let 3727:table 3716:table 3317:CCITT 2987:below 2922:below 2832:below 2781:below 2532:below 2491:below 2398:-bit 287:, or 277:ASCII 235:with 145:JSTOR 131:books 100:, or 7691:link 7642:ISSN 7407:ISBN 7375:2017 7234:ISBN 6081:+ 1 5223:+ 1 4536:LSBF 4526:MSBF 4511:+ 1 4258:same 4137:0xff 4128:data 4086:< 4029:data 3880:1 } 3868:255 3862:from 3839:else 3821:crc 3799:1 } 3785:from 3762:else 3744:crc 3668:FDDI 3561:else 3543:rem 3530:from 3514:from 3497:crc( 3461:else 3443:rem 3430:from 3407:from 3390:crc( 3155:byte 2975:else 2948:from 2929:from 2908:crc( 2900:byte 2820:else 2788:from 2767:crc( 2726:and 2498:from 2470:crc( 216:and 210:byte 117:news 7634:doi 7592:doi 7588:IBM 7444:doi 7399:doi 7338:W3C 7306:doi 7226:doi 7118:rem 7077:and 6444:+ e 6434:+ e 6424:+ e 6414:+ e 6404:+ e 6394:+ e 6384:+ e 6374:+ e 6370:+ e 6362:+ e 6334:+ e 6318:+ s 6290:+ s 6278:+ s 6274:+ s 6264:+ s 6252:+ s 6240:+ s 6228:+ s 6216:+ s 6204:+ s 6192:+ s 5720:+ e 5710:+ e 5700:+ e 5690:+ e 5674:+ e 5670:+ e 5660:+ e 5656:+ e 5646:+ e 5642:+ e 5632:+ e 5628:+ e 5618:+ e 5608:+ e 5598:+ e 5588:+ e 5584:+ e 5580:+ e 5570:+ e 5566:+ e 5554:+ e 5550:+ e 5538:+ e 5534:+ e 5518:+ s 5514:+ s 5500:+ s 5496:+ s 5482:+ s 5478:+ s 5464:+ s 5460:+ s 5456:+ s 5444:+ s 5432:+ s 5420:+ s 5408:+ s 5404:+ s 5394:+ s 5390:+ s 5380:+ s 5376:+ s 5366:+ s 5362:+ s 5346:+ s 5338:+ s 5330:+ s 5322:+ s 4874:+ e 4870:+ e 4866:+ e 4858:+ e 4854:+ e 4850:+ e 4842:+ e 4838:+ e 4830:+ e 4826:+ e 4818:+ e 4814:+ e 4810:+ e 4806:+ e 4800:+ e 4792:+ e 4788:+ e 4784:+ e 4780:+ e 4776:+ e 4772:+ e 4768:+ e 4764:+ e 4752:+ e 4748:+ e 4744:+ e 4740:+ e 4734:+ e 4730:+ e 4726:+ e 4714:+ e 4710:+ e 4706:+ e 4700:+ e 4696:+ e 4692:+ e 4676:+ e 4672:+ e 4660:+ e 4656:+ e 4644:+ e 4640:+ e 4628:+ e 4624:+ e 4620:+ e 4614:+ e 4606:+ e 4598:+ e 4590:+ e 4586:+ e 4582:0 e 4462:+ s 4454:+ s 4450:= s 4442:i+8 4440:+ c 4436:= d 4421:+ e 4413:+ e 4409:= e 4399:+ c 4395:= d 4248:xor 4240:xor 4062:for 3922:). 3902:xor 3874:xor 3858:for 3831:xor 3829:1) 3823:and 3793:xor 3781:for 3754:xor 3752:1) 3746:and 3723:crc 3714:xor 3698:536 3687:PNG 3680:PNG 3672:ZIP 3646:xor 3642:xor 3640:8) 3630:xor 3626:xor 3624:8) 3611:rem 3590:xor 3557:xor 3555:1) 3545:and 3526:for 3522:xor 3510:for 3503:int 3469:and 3457:xor 3455:1) 3445:and 3426:for 3415:xor 3403:for 3396:int 3165:or 2971:xor 2944:for 2937:xor 2925:for 2914:int 2896:xor 2892:xor 2816:xor 2796:xor 2784:for 2773:int 2744:xor 2524:xor 2494:for 2476:int 2457:xor 297:HEC 229:CRC 7774:: 7757:. 7725:, 7714:, 7687:}} 7683:{{ 7648:. 7640:. 7630:72 7628:. 7624:. 7586:: 7580:41 7578:. 7572:. 7544:. 7536:. 7502:. 7450:. 7440:57 7438:. 7415:. 7405:. 7365:. 7361:. 7336:. 7314:. 7302:31 7300:. 7294:. 7256:^ 7242:. 7232:. 7220:. 7182:+1 7088:as 7047:+ 7043:+ 7039:+ 7035:+ 7031:+ 7027:+ 7016:. 6997:); 6922:); 6877:); 6850:); 6823:); 6727:); 6700:15 6664:); 6619:); 6592:); 6565:); 6538:); 6368:15 6360:14 6356:13 6352:12 6348:11 6344:10 6340:9 6328:8 6169:15 6165:14 6161:13 6157:12 6153:11 6149:10 6145:9 6141:8 6137:7 6133:6 6129:5 6125:4 6121:3 6117:2 6113:1 6109:0 6077:+ 6073:+ 6055:); 5980:); 5890:); 5887:12 5827:); 5800:); 5624:15 5614:14 5604:13 5594:12 5576:11 5560:10 5544:9 5528:8 5311:15 5307:14 5303:13 5299:12 5295:11 5291:10 5287:9 5283:8 5279:7 5275:6 5271:5 5267:4 5263:3 5259:2 5255:1 5251:0 5219:+ 5215:+ 5194:); 5149:); 5026:); 4987:); 4575:7 4571:6 4567:5 4563:4 4559:3 4555:2 4551:1 4547:0 4507:+ 4503:+ 4487:+ 4252:. 4185:^= 4098:++ 3975:do 3969:in 3900:i 3870:by 3866:to 3864:0 3860:j 3853:j 3837:} 3819:if 3815:do 3789:to 3787:0 3783:j 3776:j 3760:} 3742:if 3738:do 3729:: 3696:65 3670:, 3666:, 3541:if 3534:to 3532:1 3528:j 3518:to 3516:1 3512:i 3441:if 3434:to 3432:1 3428:j 3411:to 3409:1 3405:i 3378:: 3345:12 3332:16 3197:. 2969:) 2959:if 2952:to 2950:1 2946:j 2933:to 2931:1 2927:i 2898:a 2814:) 2804:if 2792:to 2790:1 2786:i 2750:. 2712:. 2516:if 2502:to 2500:1 2496:i 2370:. 2368:16 2307:16 2241:0 2188:0 2142:0 2089:0 2045:0 1992:0 1950:0 1897:1 1857:0 1804:0 1766:0 1713:1 1677:0 1624:1 1590:0 1537:1 1505:0 1447:0 1394:0 1348:0 1295:1 1251:0 1198:1 1156:0 1103:0 1063:0 1010:1 972:0 919:0 883:0 830:1 796:0 743:0 711:0 610:. 376:16 293:16 291:57 285:10 220:. 96:, 7763:. 7746:. 7693:) 7656:. 7636:: 7609:. 7594:: 7557:. 7521:. 7506:. 7458:. 7446:: 7423:. 7401:: 7377:. 7347:. 7322:. 7308:: 7279:. 7250:. 7228:: 7184:. 7180:x 7142:x 7126:n 7122:n 7049:x 7045:x 7041:x 7037:x 7033:x 7029:x 7025:x 6994:8 6988:f 6985:( 6982:^ 6979:) 6976:7 6970:f 6967:( 6964:^ 6961:) 6958:6 6952:f 6949:( 6946:^ 6943:) 6940:8 6934:c 6931:( 6928:= 6925:r 6919:8 6913:p 6910:( 6907:| 6904:e 6901:= 6898:f 6895:; 6892:1 6886:p 6883:= 6880:p 6874:1 6868:p 6865:( 6862:^ 6859:p 6856:= 6853:p 6847:2 6841:p 6838:( 6835:^ 6832:p 6829:= 6826:p 6820:4 6814:e 6811:( 6808:^ 6805:e 6802:= 6799:p 6796:; 6793:d 6790:^ 6787:c 6784:= 6781:e 6778:… 6775:; 6772:f 6769:, 6766:r 6763:, 6760:c 6754:; 6751:p 6748:, 6745:e 6742:, 6739:d 6724:1 6718:t 6715:( 6712:^ 6709:t 6706:^ 6703:) 6694:t 6691:( 6688:^ 6685:) 6682:8 6676:c 6673:( 6670:= 6667:r 6661:1 6655:s 6652:( 6649:| 6646:p 6643:= 6640:t 6637:; 6634:1 6628:p 6625:= 6622:p 6616:1 6610:p 6607:( 6604:^ 6601:p 6598:= 6595:p 6589:2 6583:p 6580:( 6577:^ 6574:p 6571:= 6568:p 6562:4 6556:s 6553:( 6550:^ 6547:s 6544:= 6541:p 6535:8 6529:c 6526:( 6523:^ 6520:d 6517:= 6514:s 6511:… 6508:; 6505:t 6502:, 6499:r 6496:, 6493:c 6487:; 6484:p 6481:, 6478:s 6475:, 6472:d 6454:p 6452:e 6446:7 6442:p 6440:e 6436:6 6432:7 6430:e 6426:5 6422:6 6420:e 6416:4 6412:5 6410:e 6406:3 6402:4 6400:e 6396:2 6392:3 6390:e 6386:1 6382:2 6380:e 6376:0 6372:1 6366:c 6364:0 6358:c 6354:c 6350:c 6346:c 6342:c 6338:c 6336:p 6326:c 6320:p 6316:7 6314:c 6312:6 6310:c 6308:5 6306:c 6304:4 6302:c 6300:3 6298:c 6296:2 6294:c 6292:7 6284:1 6282:c 6280:6 6276:7 6270:0 6268:c 6266:5 6262:6 6260:s 6254:4 6250:5 6248:s 6242:3 6238:4 6236:s 6230:2 6226:3 6224:s 6218:1 6214:2 6212:s 6206:0 6202:1 6200:s 6194:p 6190:0 6188:s 6182:p 6180:s 6107:r 6079:x 6075:x 6071:x 6052:4 6046:f 6043:( 6040:^ 6037:) 6034:3 6028:f 6025:( 6022:^ 6019:) 6016:8 6010:f 6007:( 6004:^ 6001:) 5998:8 5992:c 5989:( 5986:= 5983:r 5977:4 5971:e 5968:( 5965:^ 5962:e 5959:= 5956:f 5953:; 5950:d 5947:^ 5944:c 5941:= 5938:e 5935:… 5932:; 5929:r 5926:, 5923:c 5917:; 5914:f 5911:, 5908:e 5905:, 5902:d 5881:t 5878:( 5875:^ 5872:) 5869:5 5863:t 5860:( 5857:^ 5854:t 5851:^ 5848:) 5845:8 5839:c 5836:( 5833:= 5830:r 5824:4 5818:s 5815:( 5812:^ 5809:s 5806:= 5803:t 5797:8 5791:c 5788:( 5785:^ 5782:d 5779:= 5776:s 5773:… 5770:; 5767:r 5764:, 5761:c 5755:; 5752:t 5749:, 5746:s 5743:, 5740:d 5722:3 5718:7 5716:e 5712:2 5708:6 5706:e 5702:1 5698:5 5696:e 5692:0 5688:4 5686:e 5682:3 5680:e 5676:3 5672:7 5668:2 5666:e 5662:2 5658:6 5654:1 5652:e 5648:1 5644:5 5640:0 5638:e 5634:0 5630:4 5622:c 5620:3 5612:c 5610:2 5602:c 5600:1 5592:c 5590:3 5586:7 5582:0 5574:c 5572:2 5568:6 5558:c 5556:1 5552:5 5542:c 5540:0 5536:4 5526:c 5520:3 5516:7 5506:7 5504:c 5502:2 5498:6 5488:6 5486:c 5484:1 5480:5 5470:5 5468:c 5466:0 5462:4 5458:7 5450:4 5448:c 5446:6 5438:3 5436:c 5434:5 5426:2 5424:c 5422:4 5414:1 5412:c 5410:3 5406:7 5400:0 5398:c 5396:2 5392:6 5388:7 5386:s 5382:1 5378:5 5374:6 5372:s 5368:0 5364:4 5360:5 5358:s 5354:4 5352:s 5348:3 5344:7 5342:s 5340:2 5336:6 5334:s 5332:1 5328:5 5326:s 5324:0 5320:4 5318:s 5249:r 5221:x 5217:x 5213:x 5191:5 5185:f 5182:( 5179:^ 5176:) 5173:4 5167:f 5164:( 5161:^ 5158:f 5155:= 5152:r 5146:6 5140:e 5137:( 5134:^ 5131:) 5128:4 5122:e 5119:( 5116:^ 5113:) 5110:3 5104:e 5101:( 5098:^ 5095:e 5092:= 5089:f 5086:; 5083:d 5080:^ 5077:c 5074:= 5071:e 5068:… 5065:; 5062:r 5059:, 5056:f 5053:, 5050:e 5047:, 5044:d 5041:, 5038:c 5023:4 5017:f 5014:( 5011:^ 5008:) 5005:1 4999:f 4996:( 4993:= 4990:r 4984:7 4978:e 4975:( 4972:^ 4969:) 4966:4 4960:e 4957:( 4954:^ 4951:e 4948:= 4945:f 4942:; 4939:d 4936:^ 4933:c 4930:= 4927:e 4924:… 4921:; 4918:r 4915:, 4912:f 4909:, 4906:e 4903:, 4900:d 4897:, 4894:c 4876:1 4872:3 4868:4 4864:7 4862:e 4860:0 4856:2 4852:3 4848:6 4846:e 4844:1 4840:2 4836:5 4834:e 4832:0 4828:1 4824:4 4822:e 4820:1 4816:3 4812:4 4808:7 4802:0 4798:3 4796:e 4794:1 4790:3 4786:4 4782:7 4778:0 4774:2 4770:3 4766:6 4758:2 4756:e 4754:0 4750:2 4746:3 4742:6 4736:1 4732:2 4728:5 4720:1 4718:e 4716:1 4712:2 4708:5 4702:0 4698:1 4694:4 4686:0 4684:e 4678:7 4674:3 4666:6 4664:e 4662:6 4658:2 4650:5 4648:e 4646:5 4642:1 4634:4 4632:e 4630:7 4626:4 4622:0 4616:7 4612:3 4610:e 4608:6 4604:2 4602:e 4600:5 4596:1 4594:e 4592:7 4588:4 4584:0 4545:r 4534:( 4524:( 4509:x 4505:x 4501:x 4493:x 4489:x 4485:x 4483:( 4464:0 4460:1 4456:6 4452:7 4448:p 4446:s 4438:i 4434:i 4432:s 4423:0 4419:1 4415:6 4411:7 4407:p 4405:e 4401:i 4397:i 4393:i 4391:e 4382:i 4380:d 4371:i 4369:r 4360:i 4358:c 4309:n 4302:n 4295:n 4287:n 4219:n 4215:n 4203:} 4200:; 4191:; 4176:} 4170:; 4164:^ 4161:) 4158:8 4149:( 4146:= 4140:; 4131:) 4125:^ 4119:( 4116:= 4104:{ 4101:) 4095:i 4092:; 4083:i 4080:; 4077:0 4074:= 4071:i 4065:( 4059:; 4053:= 4044:{ 4041:) 4032:, 4020:( 3904:j 3615:i 3366:1 3363:+ 3358:5 3354:x 3350:+ 3341:x 3337:+ 3328:x 3302:x 3264:x 3252:( 3244:( 3225:) 3222:x 3219:( 3216:M 3185:x 3136:0 3132:x 3109:1 3103:n 3099:x 3078:) 3075:x 3072:( 3069:R 3049:n 3029:x 2979:x 2967:x 2963:x 2869:n 2865:x 2854:n 2824:x 2812:x 2808:x 2800:x 2759:n 2717:n 2700:x 2674:1 2668:n 2664:x 2650:n 2630:n 2626:x 2611:n 2592:0 2588:x 2563:x 2520:x 2510:x 2506:x 2440:x 2431:n 2410:x 2386:n 2364:x 2348:3 2344:x 2340:+ 2335:4 2331:x 2327:+ 2322:7 2318:x 2303:x 2289:x 2286:+ 2281:5 2277:x 2273:+ 2268:7 2264:x 2238:0 2235:0 2232:1 2229:1 2226:0 2223:0 2220:1 2217:0 2214:0 2211:0 2208:0 2205:0 2202:0 2199:0 2196:0 2193:= 2185:0 2182:0 2179:0 2176:0 2173:0 2170:0 2167:0 2164:0 2161:− 2139:0 2136:0 2133:1 2130:1 2127:0 2124:0 2121:1 2118:0 2115:0 2112:0 2109:0 2106:0 2103:0 2100:0 2097:0 2094:= 2086:0 2083:0 2080:0 2077:0 2074:0 2071:0 2068:0 2065:0 2062:− 2042:0 2039:0 2036:1 2033:1 2030:0 2027:0 2024:1 2021:0 2018:0 2015:0 2012:0 2009:0 2006:0 2003:0 2000:0 1997:= 1989:0 1986:0 1983:0 1980:0 1977:0 1974:0 1971:0 1968:0 1965:− 1947:0 1944:0 1941:1 1938:1 1935:0 1932:0 1929:1 1926:0 1923:0 1920:0 1917:0 1914:0 1911:0 1908:0 1905:0 1902:= 1894:1 1891:1 1888:0 1885:0 1882:0 1879:0 1876:0 1873:1 1870:− 1854:0 1851:0 1848:0 1845:0 1842:1 1839:0 1836:1 1833:0 1830:0 1827:0 1824:1 1821:0 1818:0 1815:0 1812:0 1809:= 1801:0 1798:0 1795:0 1792:0 1789:0 1786:0 1783:0 1780:0 1777:− 1763:0 1760:0 1757:0 1754:0 1751:1 1748:0 1745:1 1742:0 1739:0 1736:0 1733:1 1730:0 1727:0 1724:0 1721:0 1718:= 1710:1 1707:1 1704:0 1701:0 1698:0 1695:0 1692:0 1689:1 1686:− 1674:0 1671:0 1668:0 1665:0 1662:0 1659:1 1656:0 1653:0 1650:0 1647:0 1644:1 1641:0 1638:1 1635:0 1632:0 1629:= 1621:1 1618:1 1615:0 1612:0 1609:0 1606:0 1603:0 1600:1 1597:− 1587:0 1584:0 1581:0 1578:0 1575:0 1572:0 1569:1 1566:1 1563:0 1560:0 1557:1 1554:0 1551:1 1548:1 1545:0 1542:= 1534:1 1531:1 1528:0 1525:0 1522:0 1519:0 1516:0 1513:1 1510:− 1502:0 1499:0 1496:0 1493:0 1490:0 1487:0 1484:0 1481:0 1478:1 1475:0 1472:1 1469:0 1466:1 1463:1 1460:1 1444:1 1441:0 1438:0 1435:0 1432:1 1429:0 1426:1 1423:0 1420:0 1417:0 1414:0 1411:0 1408:0 1405:0 1402:0 1399:= 1391:0 1388:0 1385:0 1382:0 1379:0 1376:0 1373:0 1370:0 1367:− 1345:1 1342:0 1339:0 1336:0 1333:1 1330:0 1327:1 1324:0 1321:0 1318:0 1315:0 1312:0 1309:0 1306:0 1303:0 1300:= 1292:1 1289:1 1286:0 1283:0 1280:0 1277:0 1274:0 1271:1 1268:− 1248:0 1245:1 1242:1 1239:0 1236:1 1233:0 1230:1 1227:0 1224:1 1221:0 1218:0 1215:0 1212:0 1209:0 1206:0 1203:= 1195:1 1192:1 1189:0 1186:0 1183:0 1180:0 1177:0 1174:1 1171:− 1153:0 1150:0 1147:0 1144:1 1141:1 1138:0 1135:1 1132:0 1129:1 1126:1 1123:0 1120:0 1117:0 1114:0 1111:0 1108:= 1100:0 1097:0 1094:0 1091:0 1088:0 1085:0 1082:0 1079:0 1076:− 1060:0 1057:0 1054:0 1051:1 1048:1 1045:0 1042:1 1039:0 1036:1 1033:1 1030:0 1027:0 1024:0 1021:0 1018:0 1015:= 1007:1 1004:1 1001:0 998:0 995:0 992:0 989:0 986:1 983:− 969:0 966:0 963:0 960:0 957:0 954:1 951:1 948:0 945:1 942:1 939:0 936:1 933:0 930:0 927:0 924:= 916:0 913:0 910:0 907:0 904:0 901:0 898:0 895:0 892:− 880:0 877:0 874:0 871:0 868:0 865:1 862:1 859:0 856:1 853:1 850:0 847:1 844:0 841:0 838:0 835:= 827:1 824:1 821:0 818:0 815:0 812:0 809:0 806:1 803:− 793:0 790:0 787:0 784:0 781:0 778:0 775:0 772:1 769:1 766:1 763:0 760:1 757:0 754:1 751:0 748:= 740:0 737:0 734:0 731:0 728:0 725:0 722:0 719:0 716:− 708:0 705:0 702:0 699:0 696:0 693:0 690:0 687:1 684:1 681:1 678:0 675:1 672:0 669:1 666:0 630:) 627:x 624:( 621:G 598:) 595:x 592:( 589:M 584:8 580:x 557:8 553:x 532:x 529:+ 524:3 520:x 516:+ 511:5 507:x 503:+ 498:6 494:x 490:+ 485:7 481:x 460:1 457:+ 454:x 451:+ 446:2 442:x 438:+ 433:4 429:x 425:+ 420:6 416:x 395:) 392:x 389:( 386:M 359:x 339:1 336:+ 333:x 330:+ 325:2 321:x 317:+ 312:8 308:x 281:2 272:. 241:x 167:) 161:( 156:) 152:( 142:· 135:· 128:· 121:· 104:. 82:. 53:) 49:( 38:.

Index

a manual or guide
rewrite this article
general notability guideline
reliable secondary sources
independent
merged
redirected
deleted
"Computation of cyclic redundancy checks"
news
newspapers
books
scholar
JSTOR
Learn how and when to remove this message
cyclic redundancy check
polynomial division, modulo two
long division
binary
exclusive or
shift register
algorithms
obfuscated
byte
parallelism
space–time tradeoffs

CRC
shift register
XOR gates

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.