91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

奇偶校驗(yàn)的優(yōu)缺點(diǎn)及奇偶校驗(yàn)代碼實(shí)現(xiàn)

嵌入式應(yīng)用開(kāi)發(fā) ? 來(lái)源:嵌入式應(yīng)用開(kāi)發(fā) ? 作者:嵌入式應(yīng)用開(kāi)發(fā) ? 2022-06-18 18:14 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

奇偶校驗(yàn)需要一位校驗(yàn)位,即使用串口通信的方式2或方式3(8位數(shù)據(jù)位+1位校驗(yàn)位)。

奇校驗(yàn)(odd parity):讓傳輸?shù)臄?shù)據(jù)(包含校驗(yàn)位)中1的個(gè)數(shù)為奇數(shù)。

即:如果傳輸字節(jié)中1的個(gè)數(shù)是偶數(shù),則校驗(yàn)位為“1”,奇數(shù)相反。

以發(fā)送字符:10101010為例

pYYBAGKtpaGALXtWAABMyPR8Bw0064.jpg

偶校驗(yàn)(even parity):讓傳輸?shù)臄?shù)據(jù)(包含校驗(yàn)位)中1的個(gè)數(shù)為偶數(shù)。

即:如果傳輸字節(jié)中1的個(gè)數(shù)是偶數(shù),則校驗(yàn)位為“0”,奇數(shù)相反。

還是以發(fā)送字符:10101010為例

poYBAGKtpaGASc73AABKhJU49Ck446.jpg

數(shù)據(jù)和校驗(yàn)位發(fā)送給接受方后,接收方再次對(duì)數(shù)據(jù)中1的個(gè)數(shù)進(jìn)行計(jì)算,如果為奇數(shù)則校驗(yàn)通過(guò),表示此次傳輸過(guò)程未發(fā)生錯(cuò)誤。如果不是奇數(shù),則表示有錯(cuò)誤發(fā)生,此時(shí)接收方可以向發(fā)送方發(fā)送請(qǐng)求,要求重新發(fā)送一遍數(shù)據(jù)。

優(yōu)缺點(diǎn):

  • 奇偶校驗(yàn)的檢錯(cuò)率只有50%,因?yàn)橹挥衅鏀?shù)個(gè)數(shù)據(jù)位發(fā)生變化能檢測(cè)到,如果偶數(shù)個(gè)數(shù)據(jù)位發(fā)生變化則無(wú)能為力了╮(╯﹏╰)╭
  • 奇偶校驗(yàn)每傳輸一個(gè)字節(jié)都需要加一位校驗(yàn)位,對(duì)傳輸效率影響很大。
  • 奇偶校驗(yàn)只能發(fā)現(xiàn)錯(cuò)誤,但不能糾正錯(cuò)誤,也就是說(shuō)它只能告訴你出錯(cuò)了,但不能告訴你怎么出錯(cuò)了,一旦發(fā)現(xiàn)錯(cuò)誤,只好重發(fā)。
  • 雖然奇偶校驗(yàn)有很多缺點(diǎn),但因?yàn)槠涫褂闷饋?lái)十分簡(jiǎn)單,故目前仍被廣泛使用。

應(yīng)用:

如何用編程確定一個(gè)字節(jié)中“1”個(gè)數(shù)的奇偶性?我們可以利用二進(jìn)制數(shù)相加的特點(diǎn):

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

可以看出,如果我們將一個(gè)字節(jié)的所有位相加

  • 有奇數(shù)個(gè)“1”的字節(jié)的和為1
  • 有偶數(shù)個(gè)“1”的字節(jié)的和為0

由此即可通過(guò)編程完成判斷。實(shí)際應(yīng)用中,實(shí)現(xiàn)方法很多,但這是相對(duì)簡(jiǎn)單的一種,這里不再贅述。

代碼實(shí)現(xiàn)部分如下:

#include
#include

unsigned char add(char data)//奇校驗(yàn) 
{
    int i, cnt = 0;

    for (i = 0; i < 7; i++)//一個(gè)char型有7位
    {
        int temp = ((data >> i) & 1);//data >> i是向右移i個(gè)位置得到的值,((data >> i) & 1)是與1不同的個(gè)數(shù)
        cnt += temp;//cnt記錄二進(jìn)制下data中1的個(gè)數(shù)
    }

    unsigned char ans = data << 1;//左移1位 
    
    if (cnt % 2 == 0)//當(dāng)cnt能夠被2整除,即cnt是偶數(shù),即1的個(gè)數(shù)是偶數(shù)
    {
        ans += 1;//在最右邊加1
    }
    else//當(dāng)cnt不能夠被2整除,即cnt是奇數(shù),即1的個(gè)數(shù)是奇數(shù)
    {
        ans += 0;//在最右邊加0
    }
    return ans;
}

unsigned char add_2(char data)//偶校驗(yàn) 
{
    int i, cnt = 0;

    for (i = 0; i < 7; i++)//一個(gè)char型有7位
    {
        int temp = ((data >> i) & 1);//data >> i是向右移i個(gè)位置得到的值,((data >> i) & 1)是與1不同的個(gè)數(shù)
        cnt += temp;//cnt記錄二進(jìn)制下data中1的個(gè)數(shù)
    }

    unsigned char ans = data << 1;//左移1位 
    
    if (cnt % 2 == 0)//當(dāng)cnt能夠被2整除,即cnt是偶數(shù),即1的個(gè)數(shù)是偶數(shù)
    {
        ans += 0;//在最右邊加0
    }
    else//當(dāng)cnt不能夠被2整除,即cnt是奇數(shù),即1的個(gè)數(shù)是奇數(shù)
    {
        ans += 1;//在最右邊加1
    }
    return ans;
}

int main()
{
    char a;
    unsigned char b;
    scanf("%c", &a);
    b = add(a);
    printf("2進(jìn)制結(jié)果表示為:");//輸出b的2進(jìn)制表示
    for (int i = 7; i >= 0; i--) {
        if (((b>>i) & 1) == 1)
            printf("1");
        else
            printf("0");
    } putchar(10);
    
    return 0;
}

審核編輯:符乾江
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 嵌入式C
    +關(guān)注

    關(guān)注

    0

    文章

    6

    瀏覽量

    7174
  • 奇偶校驗(yàn)
    +關(guān)注

    關(guān)注

    0

    文章

    15

    瀏覽量

    8410
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    剖析IDT74SSTUBF32865A:28位1:2帶奇偶校驗(yàn)的寄存器緩沖器

    剖析IDT74SSTUBF32865A:28位1:2帶奇偶校驗(yàn)的寄存器緩沖器 在DDR2內(nèi)存模塊的設(shè)計(jì)中,一款優(yōu)秀的寄存器緩沖器至關(guān)重要。今天我們就來(lái)深入了解Renesas
    的頭像 發(fā)表于 01-31 17:35 ?1120次閱讀

    CW32L083RBT6在手機(jī)APP無(wú)線溫控器應(yīng)用優(yōu)勢(shì)

    等級(jí) ●最大 256K 字節(jié) FLASH,數(shù)據(jù)保持 25 年 @85℃ ●最大 24K 字節(jié) RAM,支持奇偶校驗(yàn) ●復(fù)位和電源管理 --低功耗模式(Sleep,DeepSleep) --上電
    發(fā)表于 01-14 08:04

    CW32F030 RAM存儲(chǔ)器的介紹

    時(shí)鐘頻率進(jìn)行訪問(wèn) ?支持奇偶校驗(yàn)功能 3 RAM 存儲(chǔ)器操作 用戶可執(zhí)行的 RAM 存儲(chǔ)器操作包括:讀操作、寫操作。 對(duì) RAM 的讀寫操作支持 8bit、16bit 和 32bit 三種
    發(fā)表于 01-12 06:33

    UART偶校驗(yàn)和奇校驗(yàn)介紹

    校驗(yàn)校驗(yàn)位使一幀數(shù)據(jù)中數(shù)據(jù)位和校驗(yàn)位中“1”的總數(shù)為奇數(shù)。 偶校驗(yàn)校驗(yàn)位使一幀數(shù)據(jù)中數(shù)據(jù)位和校驗(yàn)
    發(fā)表于 12-15 06:02

    CW32F030 UART的主要特性

    半雙工 支持硬件流控 RTS、CTS 支持直接內(nèi)存訪問(wèn) (DMA) 支持多機(jī)通信,自動(dòng)地址識(shí)別 6 個(gè)帶中斷標(biāo)志的中斷源 錯(cuò)誤檢測(cè):奇偶校驗(yàn)錯(cuò)誤、幀結(jié)構(gòu)錯(cuò)誤 低功耗模式下收發(fā)數(shù)據(jù),中斷喚醒 MCU
    發(fā)表于 12-11 08:07

    UART的缺點(diǎn)介紹

    : UART 的錯(cuò)誤檢測(cè)僅限于奇偶校驗(yàn),奇偶校驗(yàn)會(huì)向數(shù)據(jù)幀添加一個(gè)額外的位以用于錯(cuò)誤檢測(cè)。然而,奇偶校驗(yàn)只能檢測(cè)奇數(shù)或偶數(shù)個(gè)位錯(cuò)誤,并且不如循環(huán)冗余校驗(yàn) (CRC) 等更高級(jí)的錯(cuò)誤檢查
    發(fā)表于 11-27 06:36

    CS校驗(yàn)原理與應(yīng)用

    接收方重新計(jì)算校驗(yàn)和,與接收到的校驗(yàn)值比較。 特點(diǎn): 簡(jiǎn)單快速:計(jì)算量小,硬件/軟件實(shí)現(xiàn)容易。 檢測(cè)能力有限: 能檢測(cè)奇數(shù)個(gè)比特錯(cuò)誤。 能檢測(cè)部分突發(fā)錯(cuò)誤(但不如CRC)。 無(wú)法檢測(cè)某些常見(jiàn)錯(cuò)誤(如
    發(fā)表于 11-19 07:51

    CW32F030K8T7的核心性能

    64KB FLASH,數(shù)據(jù)保持時(shí)間長(zhǎng)達(dá) 25 年(@85℃)。 數(shù)據(jù)存儲(chǔ)器:最大 8KB RAM,支持奇偶校驗(yàn),確保數(shù)據(jù)可靠性。 OTP 存儲(chǔ)器:128 字節(jié),用于存儲(chǔ)唯一標(biāo)識(shí)或加密密鑰。[/td][/tr]
    發(fā)表于 11-18 08:03

    電能質(zhì)量在線監(jiān)測(cè)裝置的數(shù)據(jù)推送協(xié)議是否可以自定義配置?

    、核心協(xié)議配置能力 1. 協(xié)議參數(shù)自定義 主流裝置支持對(duì)協(xié)議底層參數(shù)進(jìn)行精細(xì)化調(diào)整,包括但不限于: 物理層配置 :波特率(1200-115200bps)、數(shù)據(jù)位(7-8 位)、停止位(1-2 位)、校驗(yàn)方式(CRC、奇偶校驗(yàn))。例如,Modbus RTU 協(xié)議可通過(guò)裝
    的頭像 發(fā)表于 11-12 13:58 ?400次閱讀
    電能質(zhì)量在線監(jiān)測(cè)裝置的數(shù)據(jù)推送協(xié)議是否可以自定義配置?

    電能質(zhì)量在線監(jiān)測(cè)裝置自診斷功能的軟件校驗(yàn)具體是如何實(shí)現(xiàn)的?

    )和通信異常,具體實(shí)現(xiàn)可分為三大核心模塊,每個(gè)模塊都有明確的校驗(yàn)邏輯和落地方法: 一、數(shù)據(jù)合理性校驗(yàn):基于物理規(guī)律的 “數(shù)據(jù)質(zhì)檢” 軟件通過(guò)預(yù)設(shè)電網(wǎng)運(yùn)行的 “合理邊界”,校驗(yàn)采樣數(shù)據(jù)的
    的頭像 發(fā)表于 11-06 10:44 ?737次閱讀

    ?SN74SSQEB32882 芯片技術(shù)文檔摘要

    這款具有奇偶校驗(yàn)功能的 JEDEC SSTE32882 28 位 1:2 或 26 位 1:2 和 4 位 1:1 寄存時(shí)鐘驅(qū)動(dòng)器設(shè)計(jì)用于在 V~DD~1.5 V,在 V~DD~1.35 V 和 V
    的頭像 發(fā)表于 09-16 14:01 ?678次閱讀
    ?SN74SSQEB32882 芯片技術(shù)文檔摘要

    SEM IP在MPSoC器件上的使用指南

    SEM(Soft Error Mitigation)技術(shù)通過(guò)目標(biāo)式ECC奇偶校驗(yàn)位注入實(shí)現(xiàn)可觀測(cè)的軟錯(cuò)誤模擬。該機(jī)制在配置存儲(chǔ)器幀(CRAM Frame)內(nèi)精確選擇校驗(yàn)位進(jìn)行可控翻轉(zhuǎn),確保注入錯(cuò)誤
    的頭像 發(fā)表于 08-13 16:59 ?1710次閱讀
    SEM IP在MPSoC器件上的使用指南

    【RA-Eco-RA6M4開(kāi)發(fā)板評(píng)測(cè)】+初識(shí)篇

    RA-Eco-RA6M4開(kāi)發(fā)板是一款基于 Arm? Cortex?-M33 內(nèi)核的開(kāi)發(fā)工具,且具有1MB 閃存、192kB支持奇偶校驗(yàn) SRAM 以及64kb ECC SRAM。 該開(kāi)發(fā)板的外觀如圖
    發(fā)表于 07-16 19:06

    芯知識(shí)|廣州唯創(chuàng)電子語(yǔ)音芯片通信控制方式解析:多模式選擇與工程適配指南

    9600(可調(diào)整)支持復(fù)雜指令集:包括文件索引播放、插播、音量32級(jí)調(diào)節(jié)、循環(huán)模式設(shè)置等數(shù)據(jù)格式:起始位1位+數(shù)據(jù)位8位+停止位1位(無(wú)奇偶校驗(yàn)位)適用場(chǎng)景:需MCU
    的頭像 發(fā)表于 06-27 08:52 ?1641次閱讀
    芯知識(shí)|廣州唯創(chuàng)電子語(yǔ)音芯片通信控制方式解析:多模式選擇與工程適配指南

    基于Verilog語(yǔ)言實(shí)現(xiàn)CRC校驗(yàn)

    CRC即循環(huán)冗余校驗(yàn)碼:是數(shù)據(jù)通信領(lǐng)域中最常用的一種查錯(cuò)校驗(yàn)碼,其特征是信息字段和校驗(yàn)字段的長(zhǎng)度可以任意選定。循環(huán)冗余檢查(CRC)是一種數(shù)據(jù)傳輸檢錯(cuò)功能,對(duì)數(shù)據(jù)進(jìn)行多項(xiàng)式計(jì)算,并將得到的結(jié)果附在幀的后面,接收設(shè)備也執(zhí)行類似的算
    的頭像 發(fā)表于 03-24 10:36 ?2518次閱讀
    基于Verilog語(yǔ)言<b class='flag-5'>實(shí)現(xiàn)</b>CRC<b class='flag-5'>校驗(yàn)</b>