How do CRCs work?

แชร์
ฝัง
  • เผยแพร่เมื่อ 5 มิ.ย. 2024
  • CRC (cyclic redundancy check) is one of the most common methods of error detection. It uses some interesting mathematical tricks to guarantee that it can catch certain kinds of errors. How does it work?
    Support these videos on Patreon: / beneater or eater.net/support for other ways to support.
    00:00 - Detecting errors with modulo division
    10:51 - Message data as a polynomial
    16:41 - Finite fields
    22:57 - Polynomial division
    31:04 - Sending and verifying CRC
    36:29 - Choosing a generator polynomial
    ------------------
    Social media:
    Website: www.eater.net
    Twitter: / ben_eater
    Patreon: / beneater
    Reddit: / beneater
    Special thanks to these supporters for making this video possible:
    Ben Dyson
    Ben Kamens
    Ben Williams
    Brandon Stranzl
    Christopher Blackmon
    Debilu Krastas
    Eric Dynowski
    Gonzalo Belascuen
    Greg Stratton
    Jay Binks
    Jayne Gabriele
    Johnathan Roatch
    Jordan Scales
    Manne Moquist
    Michael
    Nicholas Moresco
    Nick Wrightsman
    Randy True
    Ric Allinson
    Sachin Chitale
    SonOfSofaman

ความคิดเห็น • 622

  • @3blue1brown
    @3blue1brown 5 ปีที่แล้ว +2171

    Ah yes, "what is x". A strangely profound question in modern algebra.

    • @BenEater
      @BenEater  5 ปีที่แล้ว +484

      According to some of my teachers, it was the only question...

    • @adamlanghans
      @adamlanghans 5 ปีที่แล้ว +102

      x = y - 90°

    • @arsen3783
      @arsen3783 5 ปีที่แล้ว +46

      "a letter"

    • @tahaabujrad7806
      @tahaabujrad7806 5 ปีที่แล้ว +20

      Because the coefficients of all the the Xs are either 0 or 1, why we do-not replace the X with the number 2?

    • @d0nnyr0n
      @d0nnyr0n 5 ปีที่แล้ว +5

      @@adamlanghans lol

  • @junkmail4613
    @junkmail4613 5 ปีที่แล้ว +950

    25 comments, 58 views, 21 likes, 0 dislikes. So I'm fairly early in the viewing.
    I'm so Damn impressed. I'm 70, a retired Electrical Engineer, and had glancing contact with CRC back in late 60's early 70's, and figured I'd get back to clarifying it to my satisfaction later on in my life, as time allowed. I long ago forgot that "promise to myself", and thru disuse, long ago lost the discipline of the required regimen to reconstruct the required elements, to then reassemble. I ramble. I AM SO PLEASED, to see with such clarity, as pure as the resonance of the ringing of a bell. It is as an epiphany. Thank You So Much, for the intense effort and discipline, you've achieved. I REALLY ENJOYED YOUR PRESENTATION, have seen some , and expect to witness many more of your videos. They are quite refreshing, and a reaffirmation of many of my previous studies. At my age, what a joy. Opening so many new refreshing avenues of research. Keep up the good work. Thanks.

    • @donprefontaine3237
      @donprefontaine3237 5 ปีที่แล้ว +3

      Ditto.

    • @johncrunk8038
      @johncrunk8038 4 ปีที่แล้ว +1

      @@donprefontaine3237 re-ditto

    • @pedzsan
      @pedzsan 4 ปีที่แล้ว +11

      Similar to Junk Mail, I'm 60. E.E. (Not retired). This really is an exceptional piece of work.

    • @CarlTWest
      @CarlTWest 4 ปีที่แล้ว +8

      My Dad has a similar background (and age). I've been thinking of sending him this playlist's link and some description (as I've been *adoring* it). Seeing your comment I decided to just do it now, and the description is mostly a copy-paste of what you've written.

    • @coreyhulse8226
      @coreyhulse8226 3 ปีที่แล้ว +9

      24 year old electrical engineer fresh out of school here, what I like about Ben's videos is how accessible and engaging these lessons are. Exactly like you said sometimes I've found in school that I make "promises to myself" that I will learn this material better once I'm out of school and that right now I just need to memorize answers so I can pass. But I've been watching these videos for the last four years and they have really helped me stop and take the time to dive into the required elements like you say. It's made me feel much more secure about my skills in the embedded systems/comp arch world and the ability to dive deep like this was critical in getting through grad school. I'm glad his videos can do something for anyone no matter what their experience.

  • @icycolas
    @icycolas ปีที่แล้ว +66

    Probably the most comprehensive explanation for CRC on TH-cam. Not only just how to do it, but also the reasoning behind it. Thank you.

  • @paololucchesi2827
    @paololucchesi2827 4 ปีที่แล้ว +231

    If you have already seen the video but you want to review just a part of it (say, you are building a project which uses a CRC):
    00:00 - Detecting errors with modulo division
    10:51 - Message data as a polynomial
    16:41 - Finite fields
    22:57 - Polynomial division
    31:04 - Sending and verifying CRC
    36:29 - Choosing a generator polynomial

    • @azzajohnson2123
      @azzajohnson2123 4 ปีที่แล้ว +7

      Paolo Lucchesi Fuck me just when you see smart guys like Ben breaking things like a genius down so I understand, he mentions professors that sit around all day finding the best generator polynomials vs overheads vs message sizes. Incredible stuff!

    • @notalostnumber8660
      @notalostnumber8660 2 ปีที่แล้ว +1

      TH-cam allows chapters now, maybe Ben could use them and make everyone's life easier.

  • @tobyfried
    @tobyfried 5 ปีที่แล้ว +129

    I'm not an engineer, I have no plans to build low-level computer hardware any time soon, but I look forward to every one of your videos. You have the spectacular ability of making complex concepts less intimidating and more digestible.

    • @azzajohnson2123
      @azzajohnson2123 4 ปีที่แล้ว +7

      Tobias Fried I’m no engineer but I can’t wait to build a low level computer to show my kids how it works!

  • @MrBluemoon74
    @MrBluemoon74 5 ปีที่แล้ว +371

    Ben, this is a real good video on CRC, I used CRC-32 multiple times in software, and relyed on some 3th party implementation to construct or validate it, but I never understood why it worked. Thanks you very much and I cannot wait for the next video to see the ex-or in action. Jeroen.

  • @HA7DN
    @HA7DN 5 ปีที่แล้ว +297

    Dammit, I've just watched a video about CRC?
    And I understood it.
    And I even liked it!
    Damn, I am a geek indeed.

    • @speggeri90
      @speggeri90 3 ปีที่แล้ว +3

      Neeeerrrrd...! I liked it too though! It's a nice feeling when you understand something new. :)

    • @okaywhynot4728
      @okaywhynot4728 3 ปีที่แล้ว +1

      Hell yeah we are 😤🤓

  • @MarkoTasic
    @MarkoTasic 5 ปีที่แล้ว +201

    Besides being great explanation, I really like how you used pen and paper instead of computer graphics and animations. It adds sentimental value to video.

    • @uptide1214
      @uptide1214 5 ปีที่แล้ว +22

      he knows the truth. never trust computers. :]

    • @Bob3519
      @Bob3519 5 ปีที่แล้ว +2

      Marko you might like "Diode gone wild" on TH-cam also. He uses good ol' pen and paper too! 😁 Not a programming channel but great electronics stuff!

    • @jsmythib
      @jsmythib 4 ปีที่แล้ว

      @@Bob3519 Looks great. Subbed.

    • @MarcSputnik
      @MarcSputnik 2 ปีที่แล้ว

      As he said one needs to do it by hand to see the pattern :-)

    • @chrisalister2297
      @chrisalister2297 2 ปีที่แล้ว +1

      Makes it more organic.

  • @bergpolarbear
    @bergpolarbear 5 ปีที่แล้ว +2

    Old retired software engineer here. Used CRC countless times but never really understood it till now. Great presentation! Thanks.

  • @davethedaemon9024
    @davethedaemon9024 5 ปีที่แล้ว +18

    I started my career as a communications technician in the late 70'sand became a communications programmer in the early 80's. I've worked with crc16 and crc32, but never knew the details at this level. I always relied on either the hardware or canned software to do the trick. Thanks for taking the time to explain this. I always wanted to understand the details. I remember trying to read a paper on the subject. It took me a while to realize that this paper was so verbose as to start off by taking 3/4 of a page to explain the mathematical concept of a bit! (He must have had a word quota). I got frustrated and gave up. Thanks for explaining this in a concise way I can understand. Now that I'm retiring and playing with Arduinos, I'd love to see how you do this in hardware. Thanks again!

    • @leave-a-comment-at-the-door
      @leave-a-comment-at-the-door ปีที่แล้ว +2

      Your three spaces between sentences is messing with my head... One is internet standard, and two is a common holdover from typewriters and stuff, but where on earth did you get three from?

    • @kaitlyn__L
      @kaitlyn__L ปีที่แล้ว

      @@leave-a-comment-at-the-door some people learned to triple space between sentences because they double spaced between words

    • @leave-a-comment-at-the-door
      @leave-a-comment-at-the-door ปีที่แล้ว

      @@kaitlyn__L double spaces between *words?* If you want more space between words wouldn't you just make the "how much the typewriter moves on the space key" space bigger? It seems excessive to have to press a button twice between every word, you are adding no new information with that extra press if you do it every time

    • @topilinkala1594
      @topilinkala1594 11 หลายเดือนก่อน

      I'm 62 years old telecom engineer in Helsinki, Finland . When I started my studies in U in 80's my major was mathematics. Because I was using computers at home to amuse myself and using communications over phonelines first to local numbers but trough them to more distant computers I started to focus my studies more on computers. So I changed my major to computer technology and quickly realised that what happens within computer is kinda boring, but what happens when they communicate with each other is fascinating. So I changed Us and majored in telecommunications. Through out my studies I tutored my fellow students in math. Modular arithmetics eg. finite fields was always the big question how they work. I always used the clock as an example. When the lecturer wrote those x-polynomials and calculated with them I always changed the x's to a, b, w or what not when I explained the things so that they'd understand that it is just an abstract that is used to make the calculation work.

  • @toncho1986
    @toncho1986 5 ปีที่แล้ว +61

    Finally! Another great video.. We really missed you a lot, Ben :)

  • @buzztoneaudioeffects6023
    @buzztoneaudioeffects6023 ปีที่แล้ว +3

    Just started a new job where we implement a lot of CRC checks, so was great to watch this video and fill in missing areas of my knowledge. Huge thanks!!

  • @Snollygoster-
    @Snollygoster- ปีที่แล้ว +2

    I truly wish I had this channel when I was younger. The concepts and seemingly esoteric knowledge that you just nail down with simple examples is almost annoying with how obvious it is, having been confused so much by it.
    Absolutely amazing teacher and I am so tempted to buy your kit and start making my own computer, because you make it feel entirely attainable.

  • @yatharthagarwal2041
    @yatharthagarwal2041 5 ปีที่แล้ว +46

    The quality of these videos!!!! Makes learning new things so fun! Love your videos ben❤️!

  • @rogeriorogerio1007
    @rogeriorogerio1007 5 ปีที่แล้ว +10

    You have the gift of deconstructing complexity into triviality. A great teacher! Wish I had classes like that back in mid school... Well we all can have them now. Thanks a lot.

  • @chrisocon
    @chrisocon 5 ปีที่แล้ว +4

    For my senior design project in CE, we had an app communicating with a microprocessor using a Bluetooth module and our information would at times be sent incorrectly. We had to use a CRC to check that our data was being transmitted correctly and use the Stop-and-Wait ARQ protocol to send acknowledgment checks so that our information was transmitted and received correctly. It took such a long time to understand how CRCs work because the math was very convoluted. I wished this video existed then!

  • @SherifTGElDin
    @SherifTGElDin 8 วันที่ผ่านมา

    This one of the best lectures on CRC on the Web. It explores the fundamentals and slowly takes u through all the steps to the final phase which is the construction of the Generating Poly.
    Even though the lecture is on paper and not some fancy ppt presentation but the presented material is to the core and very valuable, I am impressed by the step by step, hand calculation, sequence of the presentation, topics covered, Q&A that come to mind.
    Looking forward to the bext lecture of HW implementation of shift/XOR operation to perform the divisin.
    Thank u 🙏

  • @AdhyyanSekhsaria
    @AdhyyanSekhsaria 5 ปีที่แล้ว +14

    Amazon video! However, I think many ppl who aren't in touch with abstract algebra can find this overly confusing because of the field we are using. The main reason it's confusing is because it looks that the field follows random rules. It is actuslly just a mod 2 field or a xor field which makes it much easier to think about. Anyway great work!

  • @GnBst
    @GnBst 3 ปีที่แล้ว +4

    This video just lit up parts of my brain i have not used since graduating year of high school, then i got a headache. Thank you so much for this video and others in the series, I have always been confused on how checksums, CRC and ECC actually work, really only paying attention to what they provide to my work. I've been in the IT realm for 20 years now and have always been ashamed of my lack of understanding of how most of the low-level components operate and the sheer brilliance in the engineering of it. Your videos are a massive asset to help me get my head around these concepts. I just hope that the crowd touting the likes of "AI" and "machine learning" take the time to understand how the low level machine enables the garbage that they talk. Thank you! I will be blowing the dust of my Arduino kit and playing with some of these things again as time permits. Thank God for the likes of you and Mr. Carlson and so many other great content creators!

  • @ronjon7942
    @ronjon7942 2 ปีที่แล้ว +6

    Wow, I’ve gotten so dumb in my old age. I’ve had delusions of retaking the three semesters of 200 level calculus, but no way. I’m gonna have to start all the way at the beginning with algebra.
    What a great presentation, Ben, this is great work. I had an epiphany when you coverted the binary message to real numbers to show how the math works to reconstruct a message at the received end. I always considered the binary math with hesitation and suspicion , but when you did the math using real numbers, my brain went “oh, yeah, of course THAT math works reliably at both sides!” Now that I see it’s not only possible, but that it HAS to work, I just need practice. Lots and lots of practice.
    One more bucket list item is to order your breadboard kits and follow along all your marvelous labs. Chuckle, maybe then I won’t still be intimidated by actually learning to program on my C64.

  • @willofirony
    @willofirony 5 ปีที่แล้ว +2

    I can't really improve on Junk Mail's comment. My experience has followed his, almost word for word. Maybe the fact that our ages are only 2 years apart is a factor here; though a was a chemical engineer with just an amature interest in electronics and programming. The other common factor is that we have both just finished watching a video by a truly gifted teacher. Thank you, Ben.

  • @niclaskron3384
    @niclaskron3384 5 ปีที่แล้ว +13

    Ben, glad to see that you are back. You are so incredibly talented at explaining these things in a simple manner. Thank you :o)

  • @atharvavaidya9245
    @atharvavaidya9245 5 ปีที่แล้ว +6

    I'm so glad I found this channel! Your explanation is outstanding...can't thank you enough!!

  • @MrMxt3
    @MrMxt3 5 ปีที่แล้ว

    Awesome! I love how clearly you are able to convey this while using simple pen and paper. No over-fancy graphics and a very well thought-through structure.

  • @codeinnovator
    @codeinnovator 5 ปีที่แล้ว +1

    In our Networks class we studied CRC. And in Network Security class we studied about finite field theory. This video was much more intuitive than two regular courses at college. Thanks for your effort in simplifying the mathematical rigour to an understandable level for the common populace.

  • @Thulgon
    @Thulgon 5 ปีที่แล้ว +2

    As a CS student, this is an eye opener as to why we need those math courses that we often complain about. Excellent work!

  • @PabloGonzalez-ub6lu
    @PabloGonzalez-ub6lu 5 ปีที่แล้ว +2

    I was looking for something like this a few weeks ago. The structure and clarity of your explanation is remarkable. I look forward for the HW implementation video.

  • @cj90210x
    @cj90210x 4 ปีที่แล้ว +1

    Absolutely superb videos, Ben. The effort you go to in producing these is phenomenal. Quite simply, thank you.

  • @DailyWalk365
    @DailyWalk365 5 ปีที่แล้ว +2

    Why must you continue to blow my mind, repeatedly? You are an excellent instructor. Wish I had you as an instructor when I was in VOTEC Electronics.

  • @diminddl
    @diminddl 5 ปีที่แล้ว +1

    You explain math better than my math teacher.

  • @neilharrison01
    @neilharrison01 10 หลายเดือนก่อน

    Hi, my name is Neil Harrison and way back in the 1980s I was an engineer working for BT. I created the CRC4 frame/mult structure for the 2.048Mbit/s transmission system that became a CCITT standard in G.704/706. Did all the modelling work on a BBC Micro. Seems a long time ago now. Amazed how it lasted. Been retired as a engineer for about 9 years.

  • @arjieparjiie
    @arjieparjiie 2 ปีที่แล้ว

    Ben, this is so well done - I could listen to you for hours. Thanks for this fantastic video that helped me brush up the math I needed for implementing some of the firmware/embedded tasks I've been doing at my job.

  • @stevemiller1581
    @stevemiller1581 5 ปีที่แล้ว

    Ben, the best think about your videos is their detail. I appreciate you taking the time to share your knowledge. I have watched every one you have made multiple times.

  • @xotmatrix
    @xotmatrix 5 ปีที่แล้ว +4

    Great video, Ben. I've used and coded CRC routines but have never understood the fundamentals of them. Can't wait for the next installment!

  • @NesrocksGamingVideos
    @NesrocksGamingVideos 4 ปีที่แล้ว

    This is by far the best math class I've had in decades. You don't speak slowly but you explain it thoroughly. You really know what you're talking about, and all that preparation with the math on paper really helped. Thanks!!!!

  • @srapdy6960
    @srapdy6960 4 ปีที่แล้ว

    The clarity and depth of content in your videos are unmatched. Simply outstanding!

  • @davedaley9093
    @davedaley9093 3 ปีที่แล้ว +1

    During the early part of my career I was a hardware tech so I attended a number of classes where the instructor would attempt to explain redundancy checks by tracing through logic diagrams. On something like the error correction logic for reading a disk track this was near impossible. This explanation clears up the questions I always had but never answered. Since I never saw the hardware in this area fail it wasn't a problem but now my curiosity has been satisfied.

  • @Twigleaf
    @Twigleaf 4 ปีที่แล้ว +1

    Back in the UseNet days, a parity reprocess was pretty much needed for large binary posts. I always thought the QuickPar .PAR2 rebuild process was one of the most ingenious and advanced engineering inventions ever. The way it could take ANY location of a 2 GB file (example) that was corrupt in ANY random spot, ... all you needed was a set number of PAR2 blocks to rebuild it. The idea of being able to rebuild any number of corrupt sections in the fileset was mind boggling. You could also rebuild entire lost segments. To this day, I do not fully understand how the Reed-Solomon algorithm EC worked to repair usenet sets. As long as the author published a set of PAR2 repair blocks, you could fix anything. To be able to fix an error in a 2 GB file, with a small 5 MB parse block was ingenious, and it had to work similar to how CRC worked, but on a much broader scale.

    • @kaitlyn__L
      @kaitlyn__L ปีที่แล้ว

      Reed-Solomon relies mainly on having a large enough size of signal bits versus data bits, that instead of the maths you just have a lookup table of valid byte codes. Anything invalid is then assumed to have intended to be the closest valid one (massive over simplification but I assume that’s what the “repair blocks” contained, the valid codes).
      For instance CDs use 14 bits to encode a byte, with the valid code words arranged in a particular geometric way through the possibility-space to keep the distance between them consistent. So quite large errors can still be recovered (and CDs use further techniques on top, interleaving, duplication, etc so all in all you can lose about a fifth of all the signal but the data will still be recoverable).

  • @bluekeybo
    @bluekeybo 5 ปีที่แล้ว

    Wow Ben! What a great quality video, as always! Thank you!

  • @Debraj1978
    @Debraj1978 3 ปีที่แล้ว +1

    Just like any subject of DSP, the math is hugely involved, but the implementation is simpler. I had been using CRC function on different microcontorller for so many years, the math behind the CRC is aptly explained here. Thank you. BTW, I had also realized that the CRC polynomials are determined after lot of reseach and that is another subject all together. Fortunately, mundane creatures like me are happy with usage of CRC. Thanks for the video.

  • @greob
    @greob 5 ปีที่แล้ว +1

    Excellent video, very interesting and nicely edited explanation. Thank you very much for sharing!

  • @peterholzer4481
    @peterholzer4481 3 ปีที่แล้ว +1

    Excellent explanation. Wish our university math professor was that clear 30 years ago. But since he wasn't I had to figure out that all those polynomial operations are just shifts and XORs in disguise myself, which was probably a good thing. OTOH, I never understood why you would use something complicated like polynomials instead of something simple like bitstrings. I put that down to mathematicians just using what they are familiar with. But now I see that proving properties (like the maximum length of a burst error that can be detected) is easier using polynomials. So another insight after 30 years :-).

  • @HarshColby
    @HarshColby 2 ปีที่แล้ว +1

    Definately one of the best and most easily understood explanations I've heard. Bravo. Understanding the detailed math isn't essential. The concept is, and explained very well here.

  • @MaximilianRehkopf
    @MaximilianRehkopf ปีที่แล้ว

    This video is a gift! CRC is one of those concepts we all use but never stop to ask how it works, and why.
    I'd absolutely love to see a video from you on Reed-Solomon codes as used in CDs.

  • @ACTlVISION
    @ACTlVISION 4 ปีที่แล้ว +12

    I knew I should've paid more attention in linear algebra... also this is the best CRC explanation I've seen

    • @duncanwalduck7715
      @duncanwalduck7715 4 ปีที่แล้ว +1

      Yhup! - you know there's no hiding that there's chunky maths in it from the slide at 0:35 (generator, fields, modulo, polynomial) but if I hang in there for 45 minutes plus re-plays, I know there's already a circuit-board implementation to look forward to in the next video. I've been hearing these terms and feel I #ought to# be able to understand them at face value [with some discrete maths background] rather than with a hand-wave over, "you spin it round and do a checksum (of sorts)". I trust you, Ben: commence the brain-dump!

  • @JoannaHammond
    @JoannaHammond 4 ปีที่แล้ว +2

    I remember (a long time ago) learning all the error correction stuff, I will have to say, you explain it so well. You'd make a great lecturer.

  • @ahmedelakrab
    @ahmedelakrab 5 ปีที่แล้ว

    Ben, great channel, man. thank you and best of luck!

  • @Zwedgy
    @Zwedgy 5 ปีที่แล้ว +451

    Yeah, I too hate when I want to say "Hi!", but say "Ho!" to a girl.

    • @-yttrium-1187
      @-yttrium-1187 5 ปีที่แล้ว +29

      I have the opposite problem

    • @calmeilles
      @calmeilles 5 ปีที่แล้ว +29

      "O hai!" No... wait... let me checksum that."

    • @R3lay0
      @R3lay0 4 ปีที่แล้ว +6

      When is he finally gonna release to video on how to avoid errors in RL?

    • @fanisdeli
      @fanisdeli 4 ปีที่แล้ว +13

      @@R3lay0 he is a computer engineer.. We don't have that "RL" thing you're talking about :(

    • @jamestheotherone742
      @jamestheotherone742 4 ปีที่แล้ว +16

      I bet she didn't check your bits.

  • @hannakrupowiecka6311
    @hannakrupowiecka6311 5 ปีที่แล้ว +1

    This is a really good video. Everything is explained clearly and patiently and I only had to pause at the monstrous polynomial division. I'm really happy to see that you continue to do these videos

  • @ChrisAthanas
    @ChrisAthanas 4 ปีที่แล้ว

    Very patient teacher. Thanks for bringing clarity to this subject

  • @richards7502
    @richards7502 4 หลายเดือนก่อน

    WOW, this is by far the most complicated thing I have understood from start to end. Fantastic explanation by Ben. Now onto the hardware build video

  • @rlamacraft
    @rlamacraft 5 ปีที่แล้ว

    So excited for the next video - so far seems like the implementation must be nothing short of magic!

  • @SyphistPrime
    @SyphistPrime 4 ปีที่แล้ว +1

    Holy shit, you did a really good job explaining this, starting with simplified and generalized concepts slowly building up to how it's actually done and do a real world example.

  • @nathanjohnson9715
    @nathanjohnson9715 2 ปีที่แล้ว +1

    I don't know why, but the "oh wait a minute, there's no such thing as six" made me laugh. Thanks as always for the incredible videos Ben!

  • @nrnoble
    @nrnoble ปีที่แล้ว

    Excellent. I have had a basic understanding of CRC for over 40 years (300 baud modem days), but under understood the black box details of how it works. Thanks

  • @buzzy1010
    @buzzy1010 3 ปีที่แล้ว

    Although it's long, I could watch it without any skipping or altering the playback speed. Now I feel like I fully understood CRC and can even apply it to different situations. Helped me a ton studying for my course. Amazing work!

  • @DRSDavidSoft
    @DRSDavidSoft 5 ปีที่แล้ว

    Thank you for an excellent & simple explanation of how CRC works!
    I'm looking forward to the next video (I'm really eager to see how you implement them).
    The cliffhangers are killing me :D

  • @jonathan8530
    @jonathan8530 5 ปีที่แล้ว +1

    Perfect timing! Just as we were talking about this at university. Great resource, love it :)

  • @myahmitchell
    @myahmitchell 5 ปีที่แล้ว +15

    Another great video! Really taking the magic out of computers, which is awesome.

  • @abhijeetd.srivastava9820
    @abhijeetd.srivastava9820 3 ปีที่แล้ว

    Amazing, video. Thank you for all the hard work behind it.

  • @prasadbeer5288
    @prasadbeer5288 2 ปีที่แล้ว

    Congratulations Ben, You have single handedly explained the weird math and rational behind the complex operations that take place with such ease. Loved and learnt !!!

  • @MrVipulLal
    @MrVipulLal ปีที่แล้ว

    Brilliant video, very well explained. Many thanks, Ben. Love your channel

  • @joeybushagour2612
    @joeybushagour2612 5 ปีที่แล้ว

    Love these videos so much! They're so well explained!

  • @sampathsubasinghe929
    @sampathsubasinghe929 2 ปีที่แล้ว

    Excellent tutorial this, from the basics to the introduction to hardware as well. Thanks a lot !

  • @RickertBrandsen
    @RickertBrandsen 2 ปีที่แล้ว

    absolutely phenomenal video... Ben you are divine in explaining things!

  • @KetilDuna
    @KetilDuna 2 ปีที่แล้ว

    This is so beautifully explained - it (re)seeps into me as I watch - thank you so much for sharing.

  • @csebastian3
    @csebastian3 2 ปีที่แล้ว

    This was a beautifully-made video. Thanks!

  • @halbeard2996
    @halbeard2996 5 ปีที่แล้ว +18

    For anyone who is confused by how the addition rules of the finite field translate to the polynomial expression:
    You can think of the polynomial as a vector (with some additional properties), where the powers of the indeterminate represent the independent entries of the vector. The video on abstract vector spaces in the linear algebra series by 3blue1brown explains why this is the case, if you're not familiar with the matter.
    Then the polynomial addition (or subtraction) is nothing more than vector addition. But in this case it is addition according to the adding rules of the finite field. At least to me this view makes it clearer why each component can be added independently and there is no carrying over.

    • @Kokurorokuko
      @Kokurorokuko ปีที่แล้ว

      That is such a great addition (pun intended) to the video. Thank you!

  • @murugesanr1691
    @murugesanr1691 5 ปีที่แล้ว +2

    I have ever seen...such a explanation for CRC .
    Thank you very much sir

  • @The.Doctor.Venkman
    @The.Doctor.Venkman 5 ปีที่แล้ว

    Thanks for another great video, Ben!

  • @mohamedhassanin6054
    @mohamedhassanin6054 5 ปีที่แล้ว

    Awesome as usual. Thank you, Mr Ben.

  • @rtv1196
    @rtv1196 3 ปีที่แล้ว

    Just wow! This video is more than awesome! Many thanks.

  • @gesprengt6561
    @gesprengt6561 5 ปีที่แล้ว +92

    Is there an exception for 0 in the axiom of multiplicative inverse?

    • @BenEater
      @BenEater  5 ปีที่แล้ว +86

      Yes; good catch! I guess I neglected to mention it, but there is indeed an explicit exception for 0. Division by zero is undefined.

    • @halbeard2996
      @halbeard2996 5 ปีที่แล้ว +51

      A rigorous definition for fields actually demands that all of the multiplication rules are not defined for 0. How 0 behaves in multiplication then only follows from the distributive law (i.e. 0•anything = 0).
      If you know about groups then you can think of fields as being made up of an additive group and a multiplicative group connected by the distributive law, where the mutliplicative group doesn't contain the neutral element from the additive group.
      Everything else from the definition in the video is correct.

    • @Sporkabyte
      @Sporkabyte 4 ปีที่แล้ว +2

      Halberd Rejoyceth there should also be an axiom that says that the field is closed with respect to its binary operations

    • @TJStellmach
      @TJStellmach 4 ปีที่แล้ว +1

      @@Sporkabyte That follows from the group axioms.

  • @agustinsaavedra4273
    @agustinsaavedra4273 5 ปีที่แล้ว

    Excellent video! Can't wait for the next one.

  • @just_morby
    @just_morby 4 ปีที่แล้ว +2

    I came here to watch some arduino systems transmit data and suddenly BAM! I'm back at the uni again. The only difference is (contrary to my professors) he makes it easier to understand. Well explained. Earned my sub. Keep it up!
    Peace out

  • @matteogagliano8660
    @matteogagliano8660 2 ปีที่แล้ว

    Very detailed and clear explanation, thank you!

  • @TheFreeSpiritKID
    @TheFreeSpiritKID ปีที่แล้ว

    Extraordinary quality. You explained CRC way better than my Profs when studying electrical engineering. Nearly forgot about this topic. Thank you!

  • @hinarinlove
    @hinarinlove 3 ปีที่แล้ว

    This is the best channel on TH-cam about computer engineering. I really love your videos

  • @Killgrind
    @Killgrind 5 ปีที่แล้ว +1

    Thank you for these videos, they are amazing.

  • @jrfoliveira
    @jrfoliveira 4 ปีที่แล้ว

    I really enjoyed this explanation. Congratulations Ben.

  • @Bob3519
    @Bob3519 5 ปีที่แล้ว

    Thanks Ben. Your content is really great! 😁

  • @cperzam7700
    @cperzam7700 4 ปีที่แล้ว +1

    Dear Ben,
    Impressive, what an explanation. Thank you very much for this amazing video, I'm subscribed now and will check your videos as I can. I'm a network engineer trying to fill all the gaps I, as Mr. Junk Mail promised to ourselves would do. Most of these missing pieces are details, so it takes much more time to find the information about it and then fully comprehend it, making it really difficult due to my daily activies. I invested both my days off for searching, refreshing long forgotten math concepts as it was required, practicing on paper just to get a blurry approach of how CRC works, how are the generator polynomials selected, if they are sent to the receiver, if the receiver already has the polynomial beforehand, etc. I was so close to give up for the week, all ready to go work and forget about it slowly overtime. I can't thank you enough for this, but there is something I can do. You can count on me watching your videos and recommend them to my coworkers who also seek to strengthen their knowledge.
    Regards from México.

  • @RodHartzell
    @RodHartzell 2 ปีที่แล้ว

    Brilliant explanation. Thank you sir!

  • @jimgolab536
    @jimgolab536 4 ปีที่แล้ว +1

    Wow! Unbelievably clear explanation. Thank you!

  • @LinkiPinkiWasTaken
    @LinkiPinkiWasTaken 5 ปีที่แล้ว

    Awesome video Ben! Can't want to see the hardware implementation :D

  • @delve_
    @delve_ 5 ปีที่แล้ว

    Some one suggested your channel in the comments of another video. This is the first video I've seen by you. I'm in love.

  • @MaxPicAxe
    @MaxPicAxe 5 ปีที่แล้ว

    Looking forward to next video :) It seems like it's going to be some simple enough xor circuit. Great video ! Thanks

  • @lukasbrown6114
    @lukasbrown6114 ปีที่แล้ว

    This is a great video to highlight the importance of prime numbers in computing and understanding the value of them from a computing aspect. Greatly appreciate seeing an underlying hint towards primes!

  • @laenprogrammation
    @laenprogrammation 4 ปีที่แล้ว

    your videos are so rigorous and well explained, it helps me to understand a course I was about to give up because it was not rigorous enough

  • @nareshadhikari171
    @nareshadhikari171 ปีที่แล้ว

    I loved your illustrations..thank you.

  • @2788west
    @2788west ปีที่แล้ว

    Fantastic explanation. Thank you!

  • @fsm6426
    @fsm6426 2 ปีที่แล้ว

    Great video, clear, concise and to the point! Thanx! 😃

  • @jeffryburns2237
    @jeffryburns2237 5 ปีที่แล้ว

    Excellent video, and very elegantly said. Thank you.

  • @georgemaragos2378
    @georgemaragos2378 2 ปีที่แล้ว

    Hi
    Another well presented and explained video, in the late 80's i had done some pascal code, one of the sites had 2400 modems to warehouse and dedicated lines ( gov department)
    I could not guarantee serial transmission, and ended up discussing with other in the telco industry and they recommend using of the shelf comms programs, but the contract terms of the project forbid it as they wanted fresh hand coded and the source code to be theirs
    So it was 80% complete and workable, in discussions about the next step eventually i said - i can re-price the job down and give you all the workings for stock transfer / accounting / interface is all done and it works stand alone and via serial port to the 2 local (on site but 600meter away ) remote warehouses the comms is working but no error checking for long distance / line loss
    I was allowed to buy some external pascal code to use as a module for the crc error checking, used that and problem solved, the purchase of the module was cheap enough ( say 3-5% of my overall charge )
    The issue was basically the long distance charges for the dial up and in organizing efficient / optimal packet size for the crc to stop resending large packets again and increasing phone charges
    There is a science to speed and pack size

  • @kch6516
    @kch6516 3 ปีที่แล้ว

    Thank you so much for such in-depth video. Thanks.

  • @FewMoreWords
    @FewMoreWords 4 ปีที่แล้ว

    Excellent video. Straight to the point. No need for fancy graphics. I say again: excellent.

  • @MarcSputnik
    @MarcSputnik 2 ปีที่แล้ว

    Well explained and better than any lectures about information/coding-theory during my studies! Furthermore links the topics (algebra, fields, polynoms) with practical use.

  • @justrichard2491
    @justrichard2491 4 ปีที่แล้ว

    Speaking as someone who has no proper credentials to be watching your video, I found it very understandable. And, as much as I would like to pat myself on the back for being so clever, I'm posting this note to congratulate you on an outstanding explanation! Nothing but net!

  • @321ooo123
    @321ooo123 4 ปีที่แล้ว

    Great material!

  • @Lorden1516
    @Lorden1516 2 ปีที่แล้ว +1

    Thank you for the well prepared walkthrough..!
    Trying to write a software implementation, I read many guides online, tested different calculators, heard of all the terms around CRC, and it only left me wanting to shoot all the guide authors...
    You instead started from the beginning, stopping at the problems that resulted in CRC's weird traits.. I also wondered why mathematicians would come up with this fringe thing, but you showed that it's actually pretty general and super powerful, so their involvement was justified.