模二除

摘要:
多位模2除法使用模2减法,没有借用的二进制减法,因此考虑余数是否足以减去数字是没有意义的。事实上,在CRC运算中,如果第一除数总是保证为1,则模2除法运算的商由第一余数和第一除数的模2除法结果确定。

今天看CRC校验,看到了模二除,在这里把相关的“模二和”、“模二除”、“模二减”来总结一下:

1、模二和的运算法则是:

0+0=0 0 + 1 = 1    1+ 0 = 1     1+ 1 = 0

理解:两个二进制数相加不考虑进位,例如01 + 11 = 10,对于两个数的低位都是1,进行模二和为0,

但是没有进位,所以高位的0 加1 还是1,因为不考虑低位的进位。

2、模二减的运算法则:

0 - 0 = 0    0 - 1 = 1    1 - 0 = 1     1 - 1  = 0

例: 1 0 1 0

-      0 1 1 0

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

   1 1 0 0        

上式的减法中,第三位的减法中0-1,如果按照二进制的减法是有借位的,但是对于模二减是没有借位的,

所以才会有第四位中的1-0仍然为1。

3、模二乘的运算法则:

0  *  0 = 0      0 * 1 =  0      1 * 0  =  0        1  *  1  = 1

例如:    1 0 1 1

    X    1 1 1

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

       1 0 1 1

     1 0 1 1

   1 0 1 1

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

   1 1 0 0 0 1

模二乘与一般二进制乘法的区别是在于下面的加法部分,模二乘的加法部分依然是模二加的法则

4、模二除运算法则:

模2除法运算定义为:
0÷1=0        1÷1=1
多位二进制模2除法也类似于普通意义上的多位二进制除法,但是在如何确定商的问题上两者采用不同的规则。后者按带借位的二进制减法,根 据余数减除数够减与否确定商1还是商0,若够减则商1,否则商0。多位模2除法采用模2减法,不带借位的二进制减法,因此考虑余数够减除数与否是没有意义 的。实际上,在CRC运算中,总能保证除数的首位为1,则模2除法运算的商是由余数首位与除数首位的模2除法运算结果确定。因为除数首位总是1,按照模2 除法运算法则,那么余数首位是1就商1,是0就商0。例如1100100÷1011=1110……110,列竖式计算:

     

模二除第1张

免责声明:文章转载自《模二除》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Swin-Transformer代码工程进行物体检测I2C 上拉电阻选择计算公式下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

js使用toFixed遇到的问题以及由此引发的小数精度问题

原文链接: https://www.cnblogs.com/yalong/p/15762637.html 项目中使用 toFixed 出现的问题: 一. js报错 Uncaught SyntaxError: Invalid or unexpected token 如下图所示: 就是说对 整数 和 字符串 使用toFixed() 会报错 二. 四舍五入不...

关于文件中的0D、0A

文件一般分为文本文件和二进制文件。   在windows文本文件中,分行即‘ “,表示为0x0D 0x0A。分为两种情况:  如果你想一个文本文件中写入一个' ',文本文件中会增加0x0D 0x0A两个字节(可以使用utraledit来查看,记事本是看不出来的); 如果你读一个文本文件,一旦遇到0x0D 0x0A,遍会读为一个' '(0x0A)。   ...

MySQL 8.0.11 GA版二进制安装

MySQL 8.0.11已发布,听闻性能提升两倍,今个自己安装体验下。1、卸载mysql老版本rpm -qa|grep mysql或者mairadbrpm -e mysql*/mariadb*rpm -e --nodeps mysql*/mariadb* 2、安装依赖包yum install gcc gcc-c++ libaio 3、下载软件包并解压tar...

c++ 中常量与变量 基本数据类型

c++中常量如何分类? 1、整数常量,所有的整数。 整数又分为 int (integer) 占用4个字节 一个字节占几个二进制位?8个二进制位,一个整型变量占32位二进制位 (内存中开辟出来的存储空间) 2、小数常量,所有的小数。 3、布尔型常量,只有两个值,true, false。 4、字符常量,一个字母或数字,用 '' 进行标识 5、字符串常量,一个或...

java 基础--8 种基本数据类型:整型、浮点型、布尔型、字符型 整型中 byte、short、int、long 的取值范围 什么是浮点型?什么是单精度和双精度?为什么不能用浮点型表示金额?

 一、8种基本数据类型(4整,2浮,1符,1布):     整型:byte(最小的数据类型)、short(短整型)、int(整型)、long(长整型);     浮点型:float(浮点型)、double(双精度浮点型);     字符型:char(字符型);     布尔型:boolean(布尔型)。 二、整型中 byte、short、int、long...

计算机基础知识:原码、反码、补码

可能很多人有这样的疑问,我们为什么要了解原码、反码、补码,它能帮助我们解决什么问题?在编写代码中有什么实际用途呢? 我是这样认为的,其一,作为计算机基础知识,我们必须有所了解。其二、这些基础知识无论是普通的编写代码,还是研究高超的算法都离不开它。 例:我们常见的位运算 按位与(&)、按位或(|)、取反(~)等等。 在代码中, 我们可能经常会碰到这样...