• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

wb-code

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

CRC(循环冗余校验)

推荐视频:【[CRC校验]手算与直观演示】 https://www.bilibili.com/video/BV1V4411Z7VA/?share_source=copy_web&vd_source=aa01db4de35fb1b44860cdd9aa71f643
详细讲解实现原理,也就是直接计算法。

CRC有以下几种方法,每种方法在计算效率、代码大小和硬件资源消耗上各有侧重:

直接计算法(按位处理)、字节查表法、半字节查表法、硬件CRC模块、利用CPU特有指令、并行算法(基于数学变换)

图片

虽然最常见的实现是按字节查表(256项),但这并不是唯一的标准。表项数量(即表格大小)与处理宽度(即查找位数)是指数关系:表格大小 = 2 ^ 一次处理的位数。

1. 按字节查表(最常见):256 项

这是最经典的平衡点。

* 处理粒度: 每次处理 8 位(1 字节)。

* 表格大小: 2^8 = 256 个表项。

* 存储空间:

    如果是 CRC16(输出 16 位,即 2 字节),表格占用 256 × 2 = 512 字节。

    如果是 CRC32(输出 32 位,即 4 字节),表格占用 256 × 4 = 1024 字节。

* 评价: 这是速度(查表次数少)和内存占用(1KB左右几乎可以忽略)的黄金平衡点。绝大多数通用场景都使用它。

2. 按半字节查表:16 项

* 处理粒度: 每次处理 4 位(半个字节)。

* 表格大小: 2^4 = 16 个表项。

* 存储空间:

    CRC16 表格仅需 16 × 2 = 32 字节。

    CRC32 表格仅需 16 × 4 = 64 字节。

* 评价: 为了节省内存,牺牲了速度(因为处理一个字节需要查两次表)。常用于廉价的单片机。

posted on 2026-03-11 21:29  心事不在脸上  阅读(2)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3