Skip to content

Instantly share code, notes, and snippets.

@GeekaholicLin
Created July 16, 2016 15:34
Show Gist options
  • Save GeekaholicLin/b5c6e5e0b3d9df757617c2d6ba6080c6 to your computer and use it in GitHub Desktop.
Save GeekaholicLin/b5c6e5e0b3d9df757617c2d6ba6080c6 to your computer and use it in GitHub Desktop.
奇偶检验码的编程思维转换

当我们使用纸和笔上使用我们人的思维来写出偶检验码,而不是编写程序来处理时,可以数'1'的个数来添加。

e.g. 1001001 需要传输这7位二进制数的时候

通过计算'1'的个数,可以知道第8位为'1'(从左往右,从1开始编号),也就是'10010011'。

但是当二进制数很长很长很长的时候,我们只能通过计算机的程序处理时,应该如何转换?

有两种办法

  • 将所有的位进行异或运算。利用的特性是奇数个‘1’进行异或运算时,结果依然为‘1’,所以加上运算结果的‘1’,刚好是偶数个。
  • 将所有位进行相加,结果对2进行取模运算

以上两种办法都可以通过程序很容易实现。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment