在线观看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

    瀏覽量

    6910
  • 奇偶校驗
    +關注

    關注

    0

    文章

    15

    瀏覽量

    8316
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    基于Verilog語言實現CRC校驗

    CRC即循環冗余校驗碼:是數據通信領域中最常用的一種查錯校驗碼,其特征是信息字段和校驗字段的長度可以任意選定。循環冗余檢查(CRC)是一種數據傳輸檢錯功能,對數據進行多項式計算,并將得到的結果附在幀的后面,接收設備也執行類似的算
    的頭像 發表于 03-24 10:36 ?1281次閱讀
    基于Verilog語言<b class='flag-5'>實現</b>CRC<b class='flag-5'>校驗</b>

    請問DAC3484的LVDS數字接口如何區分4個信道?

    我會使用WORD-WIDE FORMAT格式,FPGA輸出數字信號給DAC3484,但是如何區分A B C D4個信道啊,時鐘DDR的雙沿只能區分兩個,4個還需要一個指示信號啊?datasheet看不出來,FRAMEP/N SYNCP/N講的不是很明白好像說是同步和奇偶校驗用的。
    發表于 01-09 06:07

    RAID 5 磁盤陣列的組成

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

    RAID 5 性能優化技巧

    RAID 5是一種廣泛使用的磁盤陣列配置,它通過在多個硬盤之間分散數據和奇偶校驗信息來提供數據冗余和性能提升。然而,RAID 5的性能受到多種因素的影響,包括硬件選擇、配置、操作系統優化等。 1.
    的頭像 發表于 12-27 17:05 ?1798次閱讀

    RAID 5 技術優勢與應用

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

    串口通訊異常處理方法 串口設備連接方式

    串口通信異常處理方法 1. 異常檢測 在串口通信中,首先需要能夠檢測到異常情況。異常檢測可以通過以下幾種方式實現: 硬件檢測 :利用串口硬件的中斷和狀態寄存器來檢測異常,如接收到錯誤幀、奇偶校驗錯誤
    的頭像 發表于 12-27 09:53 ?3818次閱讀

    dac161p997這幾個寄存器全配置為0,當發生錯誤時,dac161p997會不會依據錯誤的數據進行輸出?

    請問dac161p997這幾個寄存器全配置為0,當發生錯誤時(比如奇偶校驗),dac161p997會不會依據錯誤的數據進行輸出?
    發表于 12-06 08:12

    raid 硬盤陣列優缺點

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

    嵌入式學習-飛凌嵌入式ElfBoard ELF 1板卡-串口通訊編程示例之串口硬件原理

    個符號。常用的波特率為:115200、9600。 報文格式 串口的報文數據由:起始位(1bit)+數據位(5~8bit)+奇偶校驗位(1bit)+停止位(1~1.5bit)組成。 起始位 在發送有效
    發表于 10-23 13:41

    飛凌嵌入式ElfBoard ELF 1板卡-串口通訊編程示例之串口硬件原理

    :115200、9600。報文格式串口的報文數據由:起始位(1bit)+數據位(5~8bit)+奇偶校驗位(1bit)+停止位(1~1.5bit)組成。起始位在發送有效數據前,無需配置,會自動產生1bit
    發表于 10-22 10:46

    UART串口通訊協議解析

    - 數據接受接口 GND - 保證兩設備共地,有統一的參考平面 通信協議 UART串口傳輸的數據被組織成數據包。每個數據包包含1個起始位,5至9個數據位,可選的奇偶校驗位和1或1.5或2個停止位
    發表于 09-12 16:01

    雙模藍牙模塊UART串口和RS232在通訊領域的優勢

    方式,主要用于計算機與其它設備之間的數據交換。RS232使用一對電線進行數據傳輸,并使用奇偶校驗和停止位來保證數據的完
    的頭像 發表于 09-09 17:07 ?785次閱讀

    如何通過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>

    在線電流監測電流表校驗儀操作說明——每日了解電力知識

    武漢摩恩MOEORW-7690電流表校驗儀,集計數校驗與電流校驗功能,支持電池與AC供電,全中文顯示,具備完善保護。可設置沖擊電壓與校驗電流,自動切斷輸出,適用于電氣設備檢測。
    的頭像 發表于 08-20 09:10 ?714次閱讀
    在線電流監測電流表<b class='flag-5'>校驗</b>儀操作說明——每日了解電力知識

    FCX3關于使用UART(引腳 E4 和 E5)進行調試的問題求解

    ) 如何定義 UART 端口的配置(波特率、位數、奇偶校驗、停止位);是否在固件中完成? 如果是,是哪個應用程序接口/函數? 3) 如果配置是在固件中完成的,那么當固件中沒有明確設置時,CX3 是否會使用默認配置? 默認值是多少?
    發表于 07-05 06:40
    主站蜘蛛池模板: 一卡二卡卡四卡无人区中文 | 亚洲午夜精品久久久久久人妖 | 亚洲国产一区二区三区a毛片 | 五月天婷婷导航 | 黄色片网站日本 | 色播视频在线观看免费 | 日日噜噜夜夜狠狠tv视频免费 | 天天操天天操天天操天天操 | 夜夜操天天干 | 国产黄大片在线观看 | 国产精品欧美一区二区 | 国产日韩精品一区二区在线观看 | 簧片地址 | 狠狠狠狼鲁欧美综合网免费 | 久久亚洲国产欧洲精品一 | 福利片在线观看免费高清 | 亚洲色啦啦狠狠网站 | jdav视频在线观看 | 国模私拍视频在线 | 国产三级黄色毛片 | 欧美性黑人极品hd网站 | 性做久久久久 | 就要干就要操 | 激情欧美一区二区三区中文字幕 | 99久久国产免费福利 | 国产精品丝袜xxxxxxx | 色偷偷888欧美精品久久久 | 国产真实乱xxxav | 性视频网 | 91av在线免费观看 | 激情丁香网 | japanese色系tube日本护士 | 国产一级特黄aaaa大片野外 | 手机看片神马午夜片 | 天天爱天天爽 | 黄 色美 女人| 成年女人色费视频免费 | 国产香蕉视频在线观看 | 如果我们是季节韩剧在线观看 | 簧片免费视频 | 亚欧成人乱码一区二区 |