在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

奇偶校驗的優缺點及奇偶校驗代碼實現

嵌入式應用開發 ? 來源:嵌入式應用開發 ? 作者:嵌入式應用開發 ? 2022-06-18 18:14 ? 次閱讀

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

奇校驗(odd parity):讓傳輸的數據(包含校驗位)中1的個數為奇數。

即:如果傳輸字節中1的個數是偶數,則校驗位為“1”,奇數相反。

以發送字符:10101010為例

pYYBAGKtpaGALXtWAABMyPR8Bw0064.jpg

偶校驗(even parity):讓傳輸的數據(包含校驗位)中1的個數為偶數。

即:如果傳輸字節中1的個數是偶數,則校驗位為“0”,奇數相反。

還是以發送字符:10101010為例

poYBAGKtpaGASc73AABKhJU49Ck446.jpg

數據和校驗位發送給接受方后,接收方再次對數據中1的個數進行計算,如果為奇數則校驗通過,表示此次傳輸過程未發生錯誤。如果不是奇數,則表示有錯誤發生,此時接收方可以向發送方發送請求,要求重新發送一遍數據。

優缺點:

  • 奇偶校驗的檢錯率只有50%,因為只有奇數個數據位發生變化能檢測到,如果偶數個數據位發生變化則無能為力了╮(╯﹏╰)╭
  • 奇偶校驗每傳輸一個字節都需要加一位校驗位,對傳輸效率影響很大。
  • 奇偶校驗只能發現錯誤,但不能糾正錯誤,也就是說它只能告訴你出錯了,但不能告訴你怎么出錯了,一旦發現錯誤,只好重發。
  • 雖然奇偶校驗有很多缺點,但因為其使用起來十分簡單,故目前仍被廣泛使用。

應用:

如何用編程確定一個字節中“1”個數的奇偶性?我們可以利用二進制數相加的特點:

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

可以看出,如果我們將一個字節的所有位相加

  • 有奇數個“1”的字節的和為1
  • 有偶數個“1”的字節的和為0

由此即可通過編程完成判斷。實際應用中,實現方法很多,但這是相對簡單的一種,這里不再贅述。

代碼實現部分如下:

#include
#include

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

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

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

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

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

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

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

審核編輯:符乾江
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 嵌入式C
    +關注

    關注

    0

    文章

    6

    瀏覽量

    6743
  • 奇偶校驗
    +關注

    關注

    0

    文章

    15

    瀏覽量

    8232
收藏 人收藏

    評論

    相關推薦

    RAID 5 磁盤陣列的組成

    奇偶校驗信息來提高性能和容錯能力。 RAID 5的基本概念 RAID 5是一種基于奇偶校驗的RAID級別,它將數據和奇偶校驗信息分布在多個磁盤上。這種分布方式允許RAID 5陣列在一塊磁盤發生故障時繼續運行,并能夠重建丟失的數
    的頭像 發表于 12-27 17:06 ?441次閱讀

    RAID 5 技術優勢與應用

    在現代數據中心和企業級存儲解決方案中,數據的可靠性、性能和可用性是至關重要的。RAID 5 作為一種流行的 RAID 配置,通過在多個硬盤上分散數據和奇偶校驗信息,提供了這些關鍵特性。 一、RAID
    的頭像 發表于 12-27 17:01 ?522次閱讀

    raid 硬盤陣列優缺點

    、提高性能或兩者兼顧。以下是關于RAID硬盤陣列的優缺點的介紹: RAID的優點: 數據冗余和容錯能力 : RAID 1(鏡像)和RAID 5(帶奇偶校驗的條帶)等配置可以在硬盤故障時保護數據不丟失,因為數據在多個硬盤上有備份。 RAID 6(雙
    的頭像 發表于 11-12 09:33 ?919次閱讀

    如何通過I2C加載TPS2388x SRAM和奇偶校驗代碼

    電子發燒友網站提供《如何通過I2C加載TPS2388x SRAM和奇偶校驗代碼.pdf》資料免費下載
    發表于 09-06 11:16 ?0次下載
    如何通過I2C加載TPS2388x SRAM和<b class='flag-5'>奇偶校驗</b><b class='flag-5'>代碼</b>

    Traveo T2G SRAM不是32位的嗎?如何得到一個64位的?

    在進行sram的ecc故障注入的時候,需要計算其ecc校驗值,在手冊上有這樣的描述 10.3.4 由軟件生成 ECC 奇偶校驗 要注入 ECC 錯誤以生成故障,必須由軟件生成 ECC 奇偶校驗
    發表于 06-03 08:49

    8位到9位奇偶校驗總線收發器ABT8338數據表

    電子發燒友網站提供《8位到9位奇偶校驗總線收發器ABT8338數據表.pdf》資料免費下載
    發表于 05-30 10:02 ?0次下載
    8位到9位<b class='flag-5'>奇偶校驗</b>總線收發器ABT8338數據表

    奇偶校驗發生器/校驗器和3態輸出的16位收發器ABT16657數據表

    電子發燒友網站提供《帶奇偶校驗發生器/校驗器和3態輸出的16位收發器ABT16657數據表.pdf》資料免費下載
    發表于 05-30 09:45 ?0次下載
    帶<b class='flag-5'>奇偶校驗</b>發生器/<b class='flag-5'>校驗</b>器和3態輸出的16位收發器ABT16657數據表

    8位到9位奇偶校驗總線收發器SN74BCT29854數據表

    電子發燒友網站提供《8位到9位奇偶校驗總線收發器SN74BCT29854數據表.pdf》資料免費下載
    發表于 05-29 09:50 ?0次下載
    8位到9位<b class='flag-5'>奇偶校驗</b>總線收發器SN74BCT29854數據表

    奇偶校驗發生器/校驗器和3態輸出的八進制收發器SN74F657數據表

    電子發燒友網站提供《帶奇偶校驗發生器/校驗器和3態輸出的八進制收發器SN74F657數據表.pdf》資料免費下載
    發表于 05-29 09:44 ?0次下載
    帶<b class='flag-5'>奇偶校驗</b>發生器/<b class='flag-5'>校驗</b>器和3態輸出的八進制收發器SN74F657數據表

    奇偶校驗器和雙3態輸出的3.3-V 12位通用總線驅動器SN74ALVCH16903數據表

    電子發燒友網站提供《帶奇偶校驗器和雙3態輸出的3.3-V 12位通用總線驅動器SN74ALVCH16903數據表.pdf》資料免費下載
    發表于 05-29 09:31 ?0次下載
    帶<b class='flag-5'>奇偶校驗</b>器和雙3態輸出的3.3-V 12位通用總線驅動器SN74ALVCH16903數據表

    雙8位至9位奇偶校驗總線收發器ABT16833數據表

    電子發燒友網站提供《雙8位至9位奇偶校驗總線收發器ABT16833數據表.pdf》資料免費下載
    發表于 05-24 09:29 ?0次下載
    雙8位至9位<b class='flag-5'>奇偶校驗</b>總線收發器ABT16833數據表

    做lora通訊用到usart,配置時遇到的usart奇偶校驗問題求解

    今天做lora通訊,用到usart,配置時發現usart奇偶校驗困惑。假如CR1->M、CR1->PCE、CR1->PS均置位即發送9位數據(含最高
    發表于 05-20 08:30

    8位到9位奇偶校驗總線收發器數據表

    電子發燒友網站提供《8位到9位奇偶校驗總線收發器數據表.pdf》資料免費下載
    發表于 05-15 09:33 ?0次下載
    8位到9位<b class='flag-5'>奇偶校驗</b>總線收發器數據表

    STM8S105K4串口2無奇偶校驗,也能接收偶校驗的數據為什么?

    MCU STM8S105K4 設置為一個起始為,8個數據位,無校驗,一個停止位,用串口助手 發送能夠 接收的數據,還是正確的, static void UART_Config(void
    發表于 04-10 08:27

    淺析MCU通信、存儲常用的簡單校驗算法

    UART有一個奇偶校驗,CAN通信有CRC校驗。Modbus、MAVlink、USB等通信協議也有校驗信息。
    的頭像 發表于 03-07 10:56 ?572次閱讀
    淺析MCU通信、存儲常用的簡單<b class='flag-5'>校驗</b>算法
    主站蜘蛛池模板: 免费三级pq | 亚洲成人在线网站 | 欧美在线1 | 亚洲一区二区三区四区在线 | 孩交精品xxxx视频视频 | 在线看片你懂得 | 天天干天天色综合网 | 精品国产三级a∨在线 | 手机看片1024在线观看 | 日日操夜夜爱 | 美女扒开尿口给男人爽免费视频 | 日本黄色免费在线 | 国产色av | 久久草在线视频国产一 | 亚洲一区在线播放 | 在线高清国产 | 亚洲欧洲精品成人久久曰影片 | 被公侵犯肉体中文字幕一区二区 | 婷婷综合七月激情啪啪 | 四虎影像| 伊人丁香婷婷综合一区二区 | 亚洲精品网站日本xxxxxxx | www.激情网.com| 久久永久视频 | 夜夜爱夜夜爽夜夜做夜夜欢 | 色狠狠综合 | 男女做性无遮挡免费视频 | 色老头性xxxx老头视频 | 极品美女洗澡后露粉嫩木耳视频 | 午夜视频在线观看免费高清 | 天天看人体 | 李老汉和小花的性生生活 | 中文天堂最新版在线精品 | 久久精品国产精品亚洲婷婷 | 国产传媒在线观看视频免费观看 | 午夜免费观看_视频在线观看 | 国产性夜夜春夜夜爽 | 亚洲黄色三级视频 | 青草网址| 99热这里只有精品一区二区三区 | 午夜剧院免费 |