<ruby id="zx91x"></ruby><p id="zx91x"></p>
<p id="zx91x"></p>
<pre id="zx91x"><ruby id="zx91x"><mark id="zx91x"></mark></ruby></pre>

<p id="zx91x"><del id="zx91x"></del></p>

        <track id="zx91x"><ruby id="zx91x"></ruby></track>

            <pre id="zx91x"><ruby id="zx91x"></ruby></pre>

            <track id="zx91x"><del id="zx91x"></del></track>

              <big id="zx91x"><ruby id="zx91x"></ruby></big>

                  crc工作總結【六篇】

                  時間:2015-04-27 工作匯報 點擊:

                  總結,漢語詞語,讀音為zǒng jié,意思是總地歸結, 以下是為大家整理的關于crc工作總結6篇 , 供大家參考選擇。

                  crc工作總結6篇

                  第1篇: crc工作總結

                  CRC16校驗算法

                  //CRC 高位字節值表

                  const unsigned char auchCRCHi[] = {

                  0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81,

                  0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,

                  0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01,

                  0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41,

                  0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81,

                  0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,

                  0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01,

                  0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,

                  0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81,

                  0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,

                  0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01,

                  0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,

                  0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81,

                  0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,

                  0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01,

                  0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,

                  0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81,

                  0x40

                  } ;

                  //CRC 低位字節值表

                  const unsigned char auchCRCLo[] = {

                  0x00, 0xC0, 0xC1, 0x01, 0xC3, 0x03, 0x02, 0xC2, 0xC6, 0x06, 0x07, 0xC7, 0x05, 0xC5, 0xC4,

                  0x04, 0xCC, 0x0C, 0x0D, 0xCD, 0x0F, 0xCF, 0xCE, 0x0E, 0x0A, 0xCA, 0xCB, 0x0B, 0xC9, 0x09,

                  0x08, 0xC8, 0xD8, 0x18, 0x19, 0xD9, 0x1B, 0xDB, 0xDA, 0x1A, 0x1E, 0xDE, 0xDF, 0x1F, 0xDD,

                  0x1D, 0x1C, 0xDC, 0x14, 0xD4, 0xD5, 0x15, 0xD7, 0x17, 0x16, 0xD6, 0xD2, 0x12, 0x13, 0xD3,

                  0x11, 0xD1, 0xD0, 0x10, 0xF0, 0x30, 0x31, 0xF1, 0x33, 0xF3, 0xF2, 0x32, 0x36, 0xF6, 0xF7,

                  0x37, 0xF5, 0x35, 0x34, 0xF4, 0x3C, 0xFC, 0xFD, 0x3D, 0xFF, 0x3F, 0x3E, 0xFE, 0xFA, 0x3A,

                  0x3B, 0xFB, 0x39, 0xF9, 0xF8, 0x38, 0x28, 0xE8, 0xE9, 0x29, 0xEB, 0x2B, 0x2A, 0xEA, 0xEE,

                  0x2E, 0x2F, 0xEF, 0x2D, 0xED, 0xEC, 0x2C, 0xE4, 0x24, 0x25, 0xE5, 0x27, 0xE7, 0xE6, 0x26,

                  0x22, 0xE2, 0xE3, 0x23, 0xE1, 0x21, 0x20, 0xE0, 0xA0, 0x60, 0x61, 0xA1, 0x63, 0xA3, 0xA2,

                  0x62, 0x66, 0xA6, 0xA7, 0x67, 0xA5, 0x65, 0x64, 0xA4, 0x6C, 0xAC, 0xAD, 0x6D, 0xAF, 0x6F,

                  0x6E, 0xAE, 0xAA, 0x6A, 0x6B, 0xAB, 0x69, 0xA9, 0xA8, 0x68, 0x78, 0xB8, 0xB9, 0x79, 0xBB,

                  0x7B, 0x7A, 0xBA, 0xBE, 0x7E, 0x7F, 0xBF, 0x7D, 0xBD, 0xBC, 0x7C, 0xB4, 0x74, 0x75, 0xB5,

                  0x77, 0xB7, 0xB6, 0x76, 0x72, 0xB2, 0xB3, 0x73, 0xB1, 0x71, 0x70, 0xB0, 0x50, 0x90, 0x91,

                  0x51, 0x93, 0x53, 0x52, 0x92, 0x96, 0x56, 0x57, 0x97, 0x55, 0x95, 0x94, 0x54, 0x9C, 0x5C,

                  0x5D, 0x9D, 0x5F, 0x9F, 0x9E, 0x5E, 0x5A, 0x9A, 0x9B, 0x5B, 0x99, 0x59, 0x58, 0x98, 0x88,

                  0x48, 0x49, 0x89, 0x4B, 0x8B, 0x8A, 0x4A, 0x4E, 0x8E, 0x8F, 0x4F, 0x8D, 0x4D, 0x4C, 0x8C,

                  0x44, 0x84, 0x85, 0x45, 0x87, 0x47, 0x46, 0x86, 0x82, 0x42, 0x43, 0x83, 0x41, 0x81, 0x80,

                  0x40

                  } ;

                  //生成16位CRC校驗碼

                  bool CRC16(unsigned char *puchMsg, int usDataLen, bool write)

                  {

                  unsigned char uchCRCHi = 0xFF; //high byte of CRC initialized

                  unsigned char uchCRCLo = 0xFF; //low byte of CRC initialized

                  unsigned uIndex; //will index into CRC lookup table

                  bool result = false;

                  int i = 0;

                  int tempLen = usDataLen-2;

                  while(tempLen--)//pass through message buffer

                  {

                  uIndex = uchCRCHi^puchMsg[i];

                  uchCRCHi = uchCRCLo^auchCRCHi[uIndex];

                  uchCRCLo = auchCRCLo[uIndex];

                  i++;

                  }

                  if (write)

                  {

                  puchMsg[usDataLen-1] = uchCRCLo;

                  puchMsg[usDataLen-2] = uchCRCHi;

                  }

                  else if (puchMsg[usDataLen-1] == uchCRCLo && puchMsg[usDataLen-2] == uchCRCHi)

                  {

                  result = true;

                  }

                  return result;

                  }

                  ///生成CRC校驗

                  #define CREATE_LEN 4 //生成帶CRC16校驗的4位字符串

                  unsigned char HosSendFrame[CREATE_LEN];

                  HosSendFrame[0] = 0x01;

                  HosSendFrame[1] = 0x02;

                  CRC16( HosSendFrame, CREATE_LEN , true );//生成CRC校驗碼

                  ///檢查CRC校驗

                  unsigned char ConRecvFrame [CREATE_LEN];

                  CRC16( ConRecvFrame, CREATE_LEN, false )//返回false為不正確,返回true為數據正確

                  第2篇: crc工作總結

                  1、循環冗余校驗碼(CRC碼,CRC=Cyclic Redundancy Check):是數據通信領域中最常用的一種差錯校驗碼,其特征是信息字段和校驗字段的長度可以任意選定。

                    2、生成CRC碼的基本原理:任意一個由二進制位串組成的代碼都可以和一個系數僅為‘0’和‘1’取值的多項式一一對應。例如:代碼1010111對應的多項式為x6+x4+x2+x+1,而多項式為x5+x3+x2+x+1對應的代碼101111。

                    3、CRC碼集選擇的原則:若設碼字長度為N,信息字段為K位,校驗字段為R位(N=K+R),則對于CRC碼集中的任一碼字,存在且僅存在一個R次多項式g(x),使得

                    V(x)=A(x)g(x)=xRm(x)+r(x);

                    其中: m(x)為K-1次信息多項式, r(x)為R-1次校驗多項式,

                    g(x)稱為生成多項式:

                    g(x)=g0+g1x1+ g2x2+...+g(R-1)x(R-1)+gRxR

                    發送方通過指定的g(x)產生CRC碼字,接收方則通過該g(x)來驗證收到的CRC碼字。

                    4、CRC校驗碼軟件生成方法:

                    借助于多項式除法,其余數為校驗字段。

                    例如:信息字段代碼為: 1011001;對應m(x)=x6+x4+x3+1

                    假設生成多項式為:g(x)=x4+x3+1;則對應g(x)的代碼為: 11001

                    x4m(x)=x10+x8+x7+x4 對應的代碼記為:10110010000;

                    采用多項式除法: 得余數為: 1010 (即校驗字段為:1010)

                    發送方:發出的傳輸字段為: 1 0 1 1 0 0 1 1010

                    信息字段 校驗字段

                    接收方:使用相同的生成碼進行校驗:接收到的字段/生成碼(二進制除法)

                    如果能夠除盡,則正確,

                    給出余數(1010)的計算步驟:

                    除法沒有數學上的含義,而是采用計算機的模二除法,即,除數和被除數做異或運算。進行異或運算時除數和被除數最高位對齊,按位異或。

                    1011001 0000

                    -11001

                    --------------------------

                    =01111010000

                    1111010000

                    -11001

                    -------------------------

                    =0011110000

                    11110000

                    -11001

                    --------------------------

                    =00111000

                    111000

                    - 11001

                    -------------------

                    = 001010

                  4、利用CRC進行檢錯的過程可簡單描述為:在發送端根據要傳送的k位二進制碼序列,以一定的規則產生一個校驗用的r位監督碼(CRC碼),附在原始信息后邊,構成一個新的二進制碼序列數共k+r位,然后發送出去。在接收端,根據信息碼和CRC碼之間所遵循的規則進行檢驗,以確定傳送中是否出錯。這個規則,在差錯控制理論中稱為“生成多項式”。

                  代數學的一般性算法

                    在代數編碼理論中,將一個碼組表示為一個多項式,碼組中各碼元當作多項式的系數。例如 1100101 表示為1·x6+1·x5+0·x4+0·x3+1·x2+0·x+1,即 x6+x5+x2+1。

                    設編碼前的原始信息多項式為P(x),P(x)的最高冪次加1等于k;生成多項式為G(x),G(x)的最高冪次等于r;CRC多項式為R(x);編碼后的帶CRC的信息多項式為T(x)。

                    發送方編碼方法:將P(x)乘以xr(即對應的二進制碼序列左移r位),再除以G(x),所得余式即為R(x)。用公式表示為T(x)=xrP(x)+R(x)

                    接收方解碼方法:將T(x)除以G(x),如果余數為0,則說明傳輸中無錯誤發生,否則說明傳輸有誤。

                    舉例來說,設信息碼為1100,生成多項式為1011,即P(x)=x3+x2,G(x)=x3+x+1,計算CRC的過程為

                    xrP(x) x3(x3+x2) x6+x5 x -------- = ---------- = -------- = (x3+x2+x) + -------- G(x) x3+x+1 x3+x+1 x3+x+1 即 R(x)=x。注意到G(x)最高冪次r=3,得出CRC為010。

                    如果用豎式除法,計算過程為

                    1110 ------- 1011 /1100000 (1100左移3位) 1011 ---- 1110 1011 ----- 1010 1011 ----- 0010 0000 ---- 010 因此,T(x)=(x6+x5)+(x)=x6+x5+x, 即 1100000+010=1100010

                    如果傳輸無誤,

                    T(x) x6+x5+x ------ = --------- = x3+x2+x, G(x) x3+x+1 無余式。回頭看一下上面的豎式除法,如果被除數是1100010,顯然在商第三個1時,就能除盡。

                    上述推算過程,有助于我們理解CRC的概念。但直接編程來實現上面的算法,不僅繁瑣,效率也不高。實際上在工程中不會直接這樣去計算和驗證CRC。

                    下表中列出了一些見于標準的CRC資料:

                    

                  生成多項式的最高冪次項系數是固定的1,故在簡記式中,將最高的1統一去掉了,如04C11DB7實際上是104C11DB7。 ** 前稱CRC-CCITT。ITU的前身是CCITT。 備注:(1)生成多項式是標準規定的 (2)CRC校驗碼是基于將位串看作是系數為0或1的多項式,一個k位的數據流可以看作是關于x的從k-1階到0階的k-1次多項式的系數序列。采用此編碼,發送方和接收方必須事先商定一個生成多項式G(x),其高位和低位必須是1。要計算m位的幀M(x)的校驗和,基本思想是將校驗和加在幀的末尾,使這個帶校驗和的幀的多項式能被G(x)除盡。當接收方收到加有校驗和的幀時,用G(x)去除它,如果有余數,則CRC校驗錯誤,只有沒有余數的校驗才是正確的。

                  第3篇: crc工作總結

                  CRC校驗碼的原理

                  在通信與數字信號處理等領域中循環冗余校驗碼(Cyclic Redundancy Check,CRC)是一種很常用的設計。一般來說數據通信中的編碼可以分為信源編碼和信道編碼兩大類,其中,為了提高數據通信的可靠性而采取的編碼稱為信道編碼,即抗干擾編碼。在通信系統中,要求數據傳輸過程中的誤碼率足夠低,而為了降低數據傳輸過程中的誤碼率,經常采用的一種方法是差錯檢測控制。

                  在實際的通信系統中,差錯檢測控制的主要方法又3種:前向糾錯(FEC),自動重發(ARQ)和反饋檢驗法。FEC指接收端不僅能夠在收到的信碼中發現錯碼,而且還能夠糾正錯碼。一般來說,這種方法不需要反向信道,實時性很好,不過設備較復雜。ARQ是指接收端在收到的信碼中檢測出錯碼時,即設法通知發送端重新發送信號,直到能夠正確接收為止。通常,這種方法只用來檢測誤碼,而且只能在雙向信道中使用。反饋檢驗法是指接收端將收到的信碼一字不差地轉發回發送端,同時與原發送信碼進行比較,如果有錯,則發端重發。這種方法的原理和設備都比較簡單,但需要雙向信道的支持,而且傳輸效率低下;

                  通過實踐檢驗,在這三中方法中,如果傳輸過程中的誤碼率較低,那么采用前向糾錯法比較理想,但如果誤碼率較高時,這種方法又會出現“亂糾”的現象;在網絡通信中,廣泛的采用差錯檢測方法時自動請求重發,這種方法只要檢錯功能即可;反饋檢驗法時前向糾錯法和自動請求重發的結合。

                  在實現差錯檢測控制的眾多方法中,循環冗余校驗就是一類重要的線性分組碼。它時一種高效的差錯控制方法,它廣泛應用于測控及數據通信領域,同時具有編碼和解碼方法簡單,檢錯能力強,誤判概率很低和具有糾錯能力等優點。

                  循環冗余校驗碼實現的方法

                  CRC的基本原理就是在一個P位二進制數據序列之后附加一個R位二進制檢驗碼序列,從而構成一個總長位N=P+R位的二進制序列。例如,P位二進制數據序列D=[dd…dd],R位二進制檢驗碼R= [rr…rr],那么所得到的這個N位二進制序列就是M=[dd…dd rr…rr],這里附加在數據序列之后的CRC碼與數據序列的內容之間存在著某種特定的關系。如果在數據傳輸過程中,由于噪聲或傳輸特性不理想而使數據序列中的某一位或某些位發生錯誤,這種特定關系就會被破壞。可見在數據的接收端通過檢查這種特定關系,可以很容易地實現對數據傳輸正確性的檢驗。

                  在CRC中,檢驗碼R使通過對數據序列D進行二進制除法取余式運算得到的,他被一個稱為生成多項式的(r+1)位二進制序列G=[gg…gg]來除,具體的多項式除法形式如下:

                  =Q(x)+

                  其中,表示將數據序列D左移r位,即在D的末尾再增加r個0位;Q(x)代表這一除法所得的商,R(x)就是所需的余式。此外,這一運算關系還可以表示為

                  通過上面CRC基本原理的介紹,可以發現生成多項式使一個非常重要的概念,它決定了CRC的具體算法。目前,生成多項式具有一下一些通用標準,其中CRC-12,CRC-16,CRC-ITU和CRC-32是國際標準。

                  CRC-4

                  CRC-12

                  CRC-16

                  CRC-ITU

                  CRC-32 …

                  CRC-32c …

                  CRC-ITU的硬件實現方法

                  該圖反映了CRC-ITU用硬件實現的原理,從左至右分別代表16個移位寄存器,左邊代表高位右邊代表低位,可以分析得知,在生成多項式的非零項指數對應的寄存器前有一個異或門,這種電路能夠實現相應的模二除法。

                  但是這種電路實現的卻是串行輸入,在高速場合下,這種方案勢必會造成編碼效率低下,誤碼率高的弊端,為了解決這個問題,提高編碼效率和正確率,要求能夠實現并行算法,在一個時鐘周期內得到一個多位數據的CRC碼。

                  CRC的并行算法原理與實現

                  在上面已經給出了CRC的硬件原理,我們可以依此得到并行算法的原理。

                  因為CRC硬件的實現方法是利用反饋移位寄存器外加異或門進行運算得來(開始計算時,所有的寄存器要清零),假如說我們輸入一個數據串,每輸入一個比特的數據時,上一狀態的所有寄存器的值,都會進行移位或進行異或運算后移位。當前狀態與前一狀態有著緊密的聯系,而這種關系就通過硬件電路的形式表示出來,同理,以此類推,那么若干個狀態后的狀態與初始狀態也有很緊密的聯系,不難看出,初始狀態為全零,8個比特串行輸入后又為一個狀態,8個比特串行再輸入后,此時的狀態與上一個8比特后的狀態又有著固定的聯系。可見,只要我們找到他們之中的這種聯系,那么我們就可以得到每次運算8位數據的CRC并行算法。

                  我們假設寄存器D15----D0的初始狀態為A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,輸入的數據為C7,C6,C5,C4,C3,C2,C1,C0,當所有數據都輸入完時,根據硬件電路圖可以得到由初始狀態和各輸入數據構成的各現態的函數。

                  通過以上推導,我們可以得到

                  D(15)=D(7)+D(11)+D(15)+C(7)+C(3)

                  D(14)=D(6)+D(10)+D(14)+C(6)+C(2)

                  D(13)=D(5)+D(9)+D(13)+C(5)+C(1)

                  D(12)=D(4)+D(15)+C(7)+D(8)+D(12)+C(4)+C(0)

                  D(11)=D(3)+D(14)+C(6)

                  D(10)=D(2)+D(13)+C(5)

                  D(9)=D(1)+D(12)+C(4)

                  D(8)=D(0)+D(11)+D(15)+C(7)+C(3)

                  D(7)=D(15)+C(7)+D(10)+D(14)+C(6)+C(2)

                  D(6)=D(14)+C(6)+D(9)+D(13)+C(5)+C(1)

                  D(5)=D(13)+C(5)+D(8)+D(12)+C(4)+C(0)

                  D(4)=D(12)+C(4)

                  D(3)=D(11)+D(15)+C(7)+C(3)

                  D(2)=D(10)+D(14)+C(6)+C(2)

                  D(1)=D(9)+D(13)+C(5)+C(1)

                  D(0)=D(8)+D(12)+C(4)+C(0)

                  CRC的VHDL語言實現

                  LIBRARY IEEE;

                  USE IEEE.STD_LOGIC_1164.ALL;

                  USE IEEE.STD_LOGIC_UNSIGNED.ALL;

                  ENTITY CRC IS

                  PORT(CLK,CLR:IN STD_LOGIC;

                  DATA_IN :IN STD_LOGIC_VECTOR(7 DOWNTO 0);

                  DATA_OUT:OUT STD_LOGIC_VECTOR(15 DOWNTO 0));

                  END CRC;

                  ARCHITECTURE A OF CRC IS

                  SIGNAL Q:STD_LOGIC_VECTOR(7 DOWNTO 0);

                  SIGNAL D:STD_LOGIC_VECTOR(15 DOWNTO 0);

                  BEGIN

                  PROCESS(CLR,CLK)

                  BEGIN

                  IF CLR="1"THEN

                  D"0");

                  ELSIF CLK"EVENT AND CLK="1"THEN

                  Q

                  第4篇: crc工作總結

                  CRC校驗專題

                  以CRC-16為例,說明CRC的計算過程:

                      1.設置CRC寄存器,并給其賦值FFFF(hex)。

                      2.將數據的第一個8-bit字符與16位CRC寄存器的低8位進行異或,并把結果存入CRC寄存器。

                      3.CRC寄存器向右移一位,MSB補零,移出并檢查LSB。

                      4.如果LSB為0,重復第三步;若LSB為1,CRC寄存器與多項式碼相異或。

                      5.重復第3與第4步直到8次移位全部完成。此時一個8-bit數據處理完畢。

                      6.重復第2至第5步直到所有數據全部處理完成。

                      7.最終CRC寄存器的內容即為CRC值。

                  翻譯:

                  1. 意思是 首先 寄存器中的值是 1111111111111111

                  2. 數據第一個字節 一個字節=8位 用二進制表示就是【00000000-11111111】之間 用這個數值 跟 寄存器中的 16個1中的后8位進行異或(異或不知道什么意思的自己查 簡單理解就是 同為0 異為1) 然后把這個數值保存到寄存器中

                  3. 判斷 最后一位是否為 0 如果為0寄存器中的值向右移動一位 前面補零 如果為1 拿寄存器中的值與多項式進行異或。

                  4. 檢查當前寄存器中的最后一位 如果是0 重復第三步;如果是 寄存器中的值與 多項式進行異或

                  5. 重復3與4直到8此移位完成。

                  6. 重復第2到第五步知道正規數組的數據驗證完成

                  7. 最終計算出的就是CRC的值

                  實例:

                  實例 byte[] bufs=new byte[]{0x2f,0x12,0x31} crc16 多項式碼假設是 0x8408 二進制形式就是1000010000001000

                  1 crc=0xffff; 用二進制表示就是 1111111111111111

                  2 拿出bufs中第一個字節 0x2f 二進制表示 00101111 跟寄存器中的 后8位進行異或 得到1111111111010000

                  3 判斷CRC寄存器中最后一位當前為0 寄存器右移一位 得到0111111111101000 (如果為1就與多項式進行異或)

                  4 判斷當前寄存器中的值 當前最后一位為0 所以重復第三步繼續右移得到0011111111110100 最后還是 0 在重復第三步 0001111111111010 最后還是0 繼續第三步0000111111111101 這時最后一位為 1了 這時與多項式進行異或 得到1011101111111001

                  5 重復判斷 知道 判斷完 8次

                  6 然后再重復 第2到第5步 直到 上面數組中的bufs中三個字節驗證完

                  7 最終寄存器中的值就是 crc值

                  下面進行實戰 C# code 分析

                  const?uint?PRESET_VALUE?=?0xFFFF; 初始化寄存器的值

                  const?uint?POLYNOMIAL?=?0x8408; 多項式碼

                  ?三個參數 1char數組 byte一樣 2.數組長度

                  uint?uiCrc16Cal(char[]?pucY,?int?ucX)

                  {

                  ??uint?ucI,?ucJ;

                  ??uint?uiCrcValue?=?PRESET_VALUE; 賦除值

                  ?

                  ??for?(ucI?=?0;?ucI??1)?^?POLYNOMIAL;

                  ????????} (*2下面解釋)

                  ?????? else

                  ???????{

                  ???????? uiCrcValue?=?(uiCrcValue?>>?1);

                  ????????} (*3下面解釋)

                  ?????}

                  ???}

                  ??return?uiCrcValue;

                  ?}

                  *1 “&”這個符號在C 、C#等語言上是按位與 即按二進制比對 1與1 得1 0與1得0 0與0得0 例如:比如:10010001(二進制)&11110000等于10010000(二進制)。 0x0001 就相當于只判斷最后一位(仔細思考)

                  *2 “>>”這個符號 是右移 符號 “^”這個符號是異或符號 即1異或0等于1,0異或0等于0。即:相同得0,相異得1

                  *3 “>>” 移位上面有解釋

                  講到這種程度你們再不明白就 不科學了 ! 直接拿去 打印完 讓張永軍給你們講去吧

                  第5篇: crc工作總結

                  瑪吉斯輪胎進軍CRC

                  作者機構:無

                  來源:汽車之友

                  ISSN:1000-6796

                  年:2009

                  卷:000

                  期:014

                  頁碼:117

                  頁數:1

                  中圖分類:U491.51

                  正文語種:CHI

                  關鍵詞:CRC;輪胎;華南虎;車隊

                  摘要:瑪吉斯輪胎聯手華南虎車隊于6月11日正式啟動CRC參賽計劃。正新橡膠(中國)有限公司國內業務部協理張傳順向華南虎車隊經理兼車手徐偉瑜贈送“瑪”到成功紀念杯。

                  第6篇: crc工作總結

                  cra和crc區別

                  1.護士呢,待遇:大的三甲醫院工資待遇福利還是不錯的,發展:基本一輩子都不會失業,直到你身體熬夜不行。一眼望到頭,當然能力強的,能當上護士長的除外。當然現在在大醫院英語和寫文章對護士的發展也是有幫助的,因為護士的科研能力一向弱于學霸級別的醫生群體。但是其實我們對研究也是要求越來高的。要往上走,個人的管理能力,業務能力,英語,科研能力都是現在大醫院看重的。個人覺得如果沒有夜班還是能接受,就是恨透了夜班。然后在醫院感覺護士地位總是低的一個階層。除護工之外,身體吃不消,所以辭職了。在大醫院那個工作力度絕對對的起那個所謂的不錯的待遇。當然能去國外做護士更好。待遇好,地位也好。2.CRC:臨床協調員,臨床試驗的高級打雜工,剛剛做滿四個月,待遇自然是比護士低。跟護士相比最大的優勢就是沒有夜班,沒有夜班!沒有夜班!跟CRA相比就是不用出差,不用出差!發展:臨床試驗國內近十年興起的一個行業,可以說目前也是個朝陽行業,CRC,CRA都到處缺人。行業不穩定,跳槽率很高,所以發展還是可以的的,工資也在慢慢的往上走:可以往人員經理,項目經理方向發展,或者后期做公司的培訓也都是不錯的選擇的。也是有經驗越來越吃香。跳槽后工資都是往上翻,比護士好。這是積極的,也有消極的,CRC是一個很尷尬的群體,在醫院,有的時候沒有辦公場所,地位比護士低,我們是要拜托研究者,護士,藥師做事安排病人方式等等,總之跟護士差不多,臨床試驗的一線:是臨床試驗的一線執行者,工作環境有點糟糕。沒有自己的地盤。有的時候很艱辛。所以不建議,老護士轉行,我覺得拉不下那個面子,當然我相信環境也是在不斷的變好,有些大城市大醫院科室都有專門CRC辦公室。記得帶教老師跟我說,剛開始是研究者都不搭理CRC做事情的,現在隨著臨床試驗的普及,也就在不斷的變化了,總之我們的知曉率,還是不夠高。就是我們報我們的title,有些醫生都不知道是干嘛的!所以自然就……所以護士轉行還是想清楚,自己要什么,像我斷不能有夜班的。

                  熱門標簽:
                  《crc工作總結【六篇】.doc》
                  將本文的Word文檔下載到電腦,方便收藏和打印
                  推薦度:

                  文檔為doc格式

                  文章下載

                  《crc工作總結【六篇】.doc》

                  VIP請直接點擊按鈕下載本文的Word文檔下載到電腦,請使用最新版的WORD和WPS軟件打開,如發現文檔不全可以聯系客服申請處理。

                  文檔下載
                  VIP免費下載文檔
                  <ruby id="zx91x"></ruby><p id="zx91x"></p>
                  <p id="zx91x"></p>
                  <pre id="zx91x"><ruby id="zx91x"><mark id="zx91x"></mark></ruby></pre>
                  
                  
                  <p id="zx91x"><del id="zx91x"></del></p>

                        <track id="zx91x"><ruby id="zx91x"></ruby></track>

                            <pre id="zx91x"><ruby id="zx91x"></ruby></pre>

                            <track id="zx91x"><del id="zx91x"></del></track>

                              <big id="zx91x"><ruby id="zx91x"></ruby></big>

                                  成人视频