精华内容
下载资源
问答
  • CRC-4简单计算

    千次阅读 2019-05-30 17:16:48
    CRC:循环冗余校验(Cyclic Redundancy Check, CRC)。 CRC是一种根据网络数据包或...数据传输过程中,无论传输系统的设计再怎么完美,差错总会存在,这种差错可能会导致链路传输的一个或者多个帧被破坏(出现比...

    CRC:循环冗余校验(Cyclic Redundancy Check, CRC)。

    CRC是一种根据网络数据包或电脑文件等数据产生简短固定位数校验码的一种散列函数,主要用来检测或校验数据传输或者保存后可能出现的错误。它是利用除法及余数的原理来作错误侦测的。

    CRC简介:

    在数据传输过程中,无论传输系统的设计再怎么完美,差错总会存在,这种差错可能会导致在链路上传输的一个或者多个帧被破坏(出现比特差错,0变为1,或者1变为0),从而接受方接收到错误的数据。

    为尽量提高接受方收到数据的正确率,在接收方接收数据之前需要对数据进行差错检测,当且仅当检测的结果为正确时接收方才真正收下数据。检测的方式有多种,常见的有奇偶校验、因特网校验和循环冗余校验等。

    CRC应用场合:

    CRC校验实用程序库 在数据存储和数据通讯领域,为了保证数据的正确,就不得不采用检错的手段。在诸多检错手段中,CRC是最著名的一种。

    CRC的全称是循环冗余校验,其特点是:检错能力强,开销小,易于用编码器及检测电路实现。从其检错能力来看,它所不能发现的错误的几率仅为0.0047%以下。从性能上和开销上考虑,均远远优于奇偶校验及算术和校验等方式。

    根据应用环境与习惯的不同,CRC又可分为以下几种标准:

    ①CRC-12码;

    ②CRC-16码;

    ③CRC-CCITT码;

    ④CRC-32码。

    CRC-12码通常用来传送6-bit字符串。CRC-16及CRC-CCITT码则用是来传送8-bit字符,其中CRC-16为美国采用,而CRC-CCITT为欧洲国家所采用。CRC-32码大都被采用在一种称为Point-to-Point同步传输中。

    因而,在数据存储和数据通讯领域,CRC无处不在:著名的通讯协议X.25的FCS(帧检错序列)采用的是CRC-CCITT,WinRAR、NERO、ARJ、LHA等压缩工具软件采用的是CRC32,磁盘驱动器的读写采用了CRC16,通用的图像存储格式GIF、TIFF等也都用CRC作为检错手段。下面介绍硬件生成与计算CRC的过程。

    CRC-16码由两个字节构成,在开始时CRC寄存器的每一位都预置为1,然后把CRC寄存器与8-bit的数据进行异或,之后对CRC寄存器从高到低进行移位,在最高位(MSB)的位置补零,而最低位(LSB,移位后已经被移出CRC寄存器)如果为1,则把寄存器与预定义的多项式码进行异或,否则如果LSB为零,则无需进行异或。重复上述的由高至低的移位8次,第一个8-bit数据处理完毕,用此时CRC寄存器的值与下一个8-bit数据异或并进行如前一个数据似的8次移位。所有的字符处理完成后CRC寄存器内的值即为最终的CRC值。

    下面为CRC的计算过程:

    1.设置CRC寄存器,并给其赋值FFFF(hex)。

    2.将数据的第一个8-bit字符与16位CRC寄存器的低8位进行异或,并把结果存入CRC寄存器。

    3.CRC寄存器向右移一位,MSB补零,移出并检查LSB。

    4.如果LSB为0,重复第三步;若LSB为1,CRC寄存器与多项式码相异或。

    原理如上,下面是linux简单crc-4计算

    头文件

    /* SPDX-License-Identifier: GPL-2.0 */
    #ifndef _LINUX_CRC4_H
    #define _LINUX_CRC4_H
    
    #include <linux/types.h>
    
    extern uint8_t crc4(uint8_t c, uint64_t x, int bits);
    
    #endif /* _LINUX_CRC4_H */
    

    头文件具有预定义处理,包含库,最后结束预处理,预处理是一个耗费很长的工程,我们先了解一些含义就可以

     #ifndef 标识如果没有定义XX (_LINUX_CRC4_H)

    #define 表示定义XX(_LINUX_CRC4_H)

    #include 表示包含<linux/types.h>

    #endif 表示这个预定义结束

    extern   1.修饰变量的声明

                 2.修饰函数声明,我们这里就是用的这个声明

                 3.可用于指示C或者C++函数的调用规范

    c文件 

    /*
     * crc4.c - simple crc-4 calculations.
     *
     * This source code is licensed under the GNU General Public License, Version
     * 2. See the file COPYING for more details.
     */
    
    #include <linux/crc4.h>
    #include <linux/module.h>
    
    static const uint8_t crc4_tab[] = {
    	0x0, 0x7, 0xe, 0x9, 0xb, 0xc, 0x5, 0x2,
    	0x1, 0x6, 0xf, 0x8, 0xa, 0xd, 0x4, 0x3,
    };
    
    /**
     * crc4 - calculate the 4-bit crc of a value.
     * @c:    starting crc4
     * @x:    value to checksum
     * @bits: number of bits in @x to checksum
     *
     * Returns the crc4 value of @x, using polynomial 0b10111.
     *
     * The @x value is treated as left-aligned, and bits above @bits are ignored
     * in the crc calculations.
     */
    uint8_t crc4(uint8_t c, uint64_t x, int bits)
    {
    	int i;
    
    	/* mask off anything above the top bit */
    	x &= (1ull << bits) - 1;
    
    	/* Align to 4-bits */
    	bits = (bits + 3) & ~0x3;
    
    	/* Calculate crc4 over four-bit nibbles, starting at the MSbit */
    	for (i = bits - 4; i >= 0; i -= 4)
    		c = crc4_tab[c ^ ((x >> i) & 0xf)];
    
    	return c;
    }
    EXPORT_SYMBOL_GPL(crc4);
    
    MODULE_DESCRIPTION("CRC4 calculations");
    MODULE_LICENSE("GPL");
    

    注意几个词,4-bits,checknum , polynomial, left-aligned

    4-bits,在这里是对所获得的值进行4个比特的检验

    checknum,数值检验

    polynomial,多项式

    left-aligned左对齐

    这里有linux/module.h的源代码https://blog.csdn.net/aomeishangpin/article/details/90733584.

     

    展开全文
  • 户,n连接,d土地→一百户家庭连接起来的土地,就是一个郡县 《英国将100户人家划分为一个郡县》】,red【红色:r火,d=t树木→点起木材,烧起来的火的颜色】→老师给你打100分的红圈圈 《实际,red是计算的意思...
  • 这是怎么一回事,能否不重装系统的情况下使系统恢复到正常启动状态?  出现这种情况是因为C盘下面的“Boot.ini”文件被破坏了。但是由于你 的机器中只有一个操作系统,当然它就是默认的操作系统,即使“Boot....
  • 137/UDP--NetBIOS名称服务器,网络基本输入/输出系统(NetBIOS)名称服务器(NBNS)协议是TCP/IP的NetBIOS(NetBT)协议族的一部分,它基于NetBIOS名称访问的网络提供主机名和地址映射方法。 138/UDP--NetBIOS数据...
  • 大话数据结构

    2018-12-14 16:02:18
    求100个人的高考成绩平均分与求全省所有考生的成绩平均分占用时间和内存存储有非常大的差异,我们自然追求高效率和低存储的算法来解决问题。 2.6.1正确性 22 2.6.2可读性 23 2.6.3健壮性 23 2.6.4时间效率高...
  • 疯狂的程序员

    热门讨论 2012-07-18 18:05:32
    这个时候如果谁有电脑他面前这么一坐,嗒嗒嗒往键盘这么一敲,屏幕网上一翻滚,肯定成偶像,谁叫他们什么也不懂,做就要做别人都不懂的。不过这年头,懂“DOS”的还真没几个。“Windows”害死人咧! 没条件,...
  • 软件设计规范

    2015-03-11 11:57:50
    计算方法本身早已经被发现了(也就是怎么自动计算,或者说什么是可计算的),剩下的问题只是应用问题。把应用问题的解决纳入软件计算模式。自动计算技术汇编指令集合那里得到了说明。所谓软件设计是把这种计算方式...
  • vc++ 应用源码包_1

    热门讨论 2012-09-15 14:22:12
    利用VC编程界面实现3D文字 MFC应用程序中浏览PDF、Word文档文件 vcdialog 自绘对话框。 vc编程:自动停靠窗体,吸附窗体 OnMoving事件处理。 vc基于HTTP协议断点续传和多线程下载源代码 VC满屏开满玫瑰花 ...
  • vc++ 应用源码包_2

    热门讨论 2012-09-15 14:27:40
    利用VC编程界面实现3D文字 MFC应用程序中浏览PDF、Word文档文件 vcdialog 自绘对话框。 vc编程:自动停靠窗体,吸附窗体 OnMoving事件处理。 vc基于HTTP协议断点续传和多线程下载源代码 VC满屏开满玫瑰花 ...
  • vc++ 应用源码包_6

    热门讨论 2012-09-15 14:59:46
    利用VC编程界面实现3D文字 MFC应用程序中浏览PDF、Word文档文件 vcdialog 自绘对话框。 vc编程:自动停靠窗体,吸附窗体 OnMoving事件处理。 vc基于HTTP协议断点续传和多线程下载源代码 VC...
  • vc++ 应用源码包_5

    热门讨论 2012-09-15 14:45:16
    利用VC编程界面实现3D文字 MFC应用程序中浏览PDF、Word文档文件 vcdialog 自绘对话框。 vc编程:自动停靠窗体,吸附窗体 OnMoving事件处理。 vc基于HTTP协议断点续传和多线程下载源代码 VC...
  • vc++ 应用源码包_4

    热门讨论 2012-09-15 14:38:35
    利用VC编程界面实现3D文字 MFC应用程序中浏览PDF、Word文档文件 vcdialog 自绘对话框。 vc编程:自动停靠窗体,吸附窗体 OnMoving事件处理。 vc基于HTTP协议断点续传和多线程下载源代码 VC满屏开满玫瑰花 ...
  • vc++ 应用源码包_3

    热门讨论 2012-09-15 14:33:15
    利用VC编程界面实现3D文字 MFC应用程序中浏览PDF、Word文档文件 vcdialog 自绘对话框。 vc编程:自动停靠窗体,吸附窗体 OnMoving事件处理。 vc基于HTTP协议断点续传和多线程下载源代码 VC满屏开满玫瑰花 ...
  • C#微软培训教材(高清PDF)

    千次下载 热门讨论 2009-07-30 08:51:17
    第十一章 方 .124 11.1 方法的声明.124 11.2 方法中的参数.125 11.3 静态和非静态的方法.129 11.4 方法的重载.130 11.5 操作符重载.134 11.6 小 结.137 第十二章 域 和 属 性 .139 12.1 域 .139 ...
  • Ping Hinet DNS (168.95.192.1), 改 [param] 位置增加一列 ping_dest=168.95.192.1, 储存之. 重新开机, 如果你是 Seeder, Aproll, Sparq….等等, 找自己的 DNS 来 Ping, 这样通信量调整功能会有所改变, 至于...
  • C#微软培训资料

    2014-01-22 14:10:17
    第十一章 方 .124 11.1 方法的声明.124 11.2 方法中的参数.125 11.3 静态和非静态的方法.129 11.4 方法的重载.130 11.5 操作符重载.134 11.6 小 结.137 第十二章 域 和 属 性 .139 12.1 域 .139 ...
  • vc++ 开发实例源码包

    2014-12-16 11:25:17
    7:IE工具栏加按钮,可以直接拖动连接到按钮下载. 8:注册采用激活方式. 9:采用Messenger的弹出滑动消息提示框. 10:下载管理,虚拟文件夹. 11:自动ping. 12:连接到搜索引擎. 13:自动报告bug,建议等. 14:宏功能. 15...
  • cFos speed

    2009-06-26 18:41:50
    Ping Hinet DNS (168.95.192.1), 改 [param] 位置增加一列 ping_dest=168.95.192.1, 储存之. 重新开机, 如果你是 Seeder, Aproll, Sparq….等等, 找自己的 DNS 来 Ping, 这样通信量调整功能会有所改变, 至于...
  • 二十三种设计模式【PDF版】

    热门讨论 2011-05-30 14:13:49
    和智慧,让你能够真正掌握接口或抽象类的应用,从而原来的 Java 语言基础跃进一步,更重要的是,GoF 的设计模式反复 向你强调一个宗旨:要让你的程序尽可能的可重用。 这其实向一个极限挑战:软件需求变幻...
  • 编码要求:用模2除法计算CRC码,生成多项式为CRC-32 功能要求:能两台计算机机运行程序,一台产生CRC码,另一台校验。 我已经有生成CRC码的程序了,但是不知道怎么可以实现WinSock通信,一定要满足WinSock通信...
  • asp.net知识库

    2015-06-18 08:45:45
    怎么在ASP.NET 2.0中使用Membership asp.net 2.0-实现数据访问(1) ASP.NET 2.0 新特性 .NET 2.0里使用强类型数据创建多层应用 MastPage中引用脚本资源 2.0正式版中callback的一些变化+使用示例(ASP.NET 2.0)...
  • 软件工程教程

    热门讨论 2012-07-06 23:10:29
    较大的公司,为自有品牌或者其他品牌设计手机或者平板电脑的总体方案。 根据需求对系统进行定制外,为系统编写定制的应用。 第二类开发者 创业型公司或者是独立开发者,盈利方式主要2种: 为国外公司外包开发,...

空空如也

空空如也

1 2
收藏数 24
精华内容 9
关键字:

在电脑上怎么计算除法