国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

    瀏覽量

    7175
  • 奇偶校驗
    +關注

    關注

    0

    文章

    15

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    剖析IDT74SSTUBF32865A:28位1:2帶奇偶校驗的寄存器緩沖器

    剖析IDT74SSTUBF32865A:28位1:2帶奇偶校驗的寄存器緩沖器 在DDR2內存模塊的設計中,一款優秀的寄存器緩沖器至關重要。今天我們就來深入了解Renesas
    的頭像 發表于 01-31 17:35 ?1127次閱讀

    CW32L083RBT6在手機APP無線溫控器應用優勢

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

    CW32F030 RAM存儲器的介紹

    時鐘頻率進行訪問 ?支持奇偶校驗功能 3 RAM 存儲器操作 用戶可執行的 RAM 存儲器操作包括:讀操作、寫操作。 對 RAM 的讀寫操作支持 8bit、16bit 和 32bit 三種
    發表于 01-12 06:33

    UART偶校驗和奇校驗介紹

    校驗校驗位使一幀數據中數據位和校驗位中“1”的總數為奇數。 偶校驗校驗位使一幀數據中數據位和校驗
    發表于 12-15 06:02

    CW32F030 UART的主要特性

    半雙工 支持硬件流控 RTS、CTS 支持直接內存訪問 (DMA) 支持多機通信,自動地址識別 6 個帶中斷標志的中斷源 錯誤檢測:奇偶校驗錯誤、幀結構錯誤 低功耗模式下收發數據,中斷喚醒 MCU
    發表于 12-11 08:07

    UART的缺點介紹

    : UART 的錯誤檢測僅限于奇偶校驗奇偶校驗會向數據幀添加一個額外的位以用于錯誤檢測。然而,奇偶校驗只能檢測奇數或偶數個位錯誤,并且不如循環冗余校驗 (CRC) 等更高級的錯誤檢查
    發表于 11-27 06:36

    CS校驗原理與應用

    接收方重新計算校驗和,與接收到的校驗值比較。 特點: 簡單快速:計算量小,硬件/軟件實現容易。 檢測能力有限: 能檢測奇數個比特錯誤。 能檢測部分突發錯誤(但不如CRC)。 無法檢測某些常見錯誤(如
    發表于 11-19 07:51

    CW32F030K8T7的核心性能

    64KB FLASH,數據保持時間長達 25 年(@85℃)。 數據存儲器:最大 8KB RAM,支持奇偶校驗,確保數據可靠性。 OTP 存儲器:128 字節,用于存儲唯一標識或加密密鑰。[/td][/tr]
    發表于 11-18 08:03

    電能質量在線監測裝置的數據推送協議是否可以自定義配置?

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

    電能質量在線監測裝置自診斷功能的軟件校驗具體是如何實現的?

    )和通信異常,具體實現可分為三大核心模塊,每個模塊都有明確的校驗邏輯和落地方法: 一、數據合理性校驗:基于物理規律的 “數據質檢” 軟件通過預設電網運行的 “合理邊界”,校驗采樣數據的
    的頭像 發表于 11-06 10:44 ?740次閱讀

    ?SN74SSQEB32882 芯片技術文檔摘要

    這款具有奇偶校驗功能的 JEDEC SSTE32882 28 位 1:2 或 26 位 1:2 和 4 位 1:1 寄存時鐘驅動器設計用于在 V~DD~1.5 V,在 V~DD~1.35 V 和 V
    的頭像 發表于 09-16 14:01 ?685次閱讀
    ?SN74SSQEB32882 芯片技術文檔摘要

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

    SEM(Soft Error Mitigation)技術通過目標式ECC奇偶校驗位注入實現可觀測的軟錯誤模擬。該機制在配置存儲器幀(CRAM Frame)內精確選擇校驗位進行可控翻轉,確保注入錯誤
    的頭像 發表于 08-13 16:59 ?1717次閱讀
    SEM IP在MPSoC器件上的使用指南

    【RA-Eco-RA6M4開發板評測】+初識篇

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

    芯知識|廣州唯創電子語音芯片通信控制方式解析:多模式選擇與工程適配指南

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

    基于Verilog語言實現CRC校驗

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