RobotGymnast

04-16-2008, 03:05 PM

I can't entirely understand CRC32. I've read this (http://www.employees.org/~surendra/asic/crc.html), but that only deals with the long XOR division when the first w+1 digits of the message are greater than the CRC.. if it's something like

_______________

10011 ) 11010110110000

--------10011

------------------------

---------10011

---------10011

------------------------

----------00001

----------00000

------------------------

-----------00010

-----------00000

------------------------

------------00101

------------00000

------------------------

-------------01011

-------------00000

------------------------

--------------10110

--------------10011

------------------------

---------------01010

---------------00000

------------------------

----------------10100

----------------10011

------------------------

-----------------01110

-----------------00000

------------------------

------------------1110 = Remainder

If it doesn't make sense because of the alignment, check the original one in the aforementioned link.. it's in part 5

that's easy because the first "dividend" (11010) is greater than the first "divisor" (which is 10011), if it's smaller though (I'll change the divisor), wouldn't it be like:

_______________

11100 ) 11010110110000

--------00000

------------------------

--------110101

--------011100

------------------------

--------1010011

--------0011100

------------------------

--------10011110

--------00011100

------------------------

--------100000101

--------000011100

------------------------

--------1000111011

--------0000011100

------------------------

--------10001001110

--------00000011100

------------------------

--------100010100100

--------000000011100

------------------------

--------1000101110000

--------0000000011100

------------------------

--------10001011011000

--------00000000011100

------------------------

--------10001011000100 = remainder?

I don't know what I'm missing, help please!

If you need help understanding the long division just because of the way it's arranged, I'll do it like:

23) 358819

----23

-------------

----128

----115

-------------

----0138

----0138

-------------

----00001

----00000

-------------

----000019

----000000

-------------

---------19 = remainder

basically in every block (seperated by the -------------), the first number is the remainder from last subtraction, and the second number is first number-(first number%divisor), AKA the number you subtract..

Well that was a tangent just in case you didn't get the division pattern.. if you still don't, sorry.

anyhoo, help please!

_______________

10011 ) 11010110110000

--------10011

------------------------

---------10011

---------10011

------------------------

----------00001

----------00000

------------------------

-----------00010

-----------00000

------------------------

------------00101

------------00000

------------------------

-------------01011

-------------00000

------------------------

--------------10110

--------------10011

------------------------

---------------01010

---------------00000

------------------------

----------------10100

----------------10011

------------------------

-----------------01110

-----------------00000

------------------------

------------------1110 = Remainder

If it doesn't make sense because of the alignment, check the original one in the aforementioned link.. it's in part 5

that's easy because the first "dividend" (11010) is greater than the first "divisor" (which is 10011), if it's smaller though (I'll change the divisor), wouldn't it be like:

_______________

11100 ) 11010110110000

--------00000

------------------------

--------110101

--------011100

------------------------

--------1010011

--------0011100

------------------------

--------10011110

--------00011100

------------------------

--------100000101

--------000011100

------------------------

--------1000111011

--------0000011100

------------------------

--------10001001110

--------00000011100

------------------------

--------100010100100

--------000000011100

------------------------

--------1000101110000

--------0000000011100

------------------------

--------10001011011000

--------00000000011100

------------------------

--------10001011000100 = remainder?

I don't know what I'm missing, help please!

If you need help understanding the long division just because of the way it's arranged, I'll do it like:

23) 358819

----23

-------------

----128

----115

-------------

----0138

----0138

-------------

----00001

----00000

-------------

----000019

----000000

-------------

---------19 = remainder

basically in every block (seperated by the -------------), the first number is the remainder from last subtraction, and the second number is first number-(first number%divisor), AKA the number you subtract..

Well that was a tangent just in case you didn't get the division pattern.. if you still don't, sorry.

anyhoo, help please!