版權(quán)歸原作者所有,如有侵權(quán),請聯(lián)系我們

[科普中國]-位填充

科學(xué)百科
原創(chuàng)
科學(xué)百科為用戶提供權(quán)威科普內(nèi)容,打造知識科普陣地
收藏

簡介

位填充簡單來說是指用“0”或“1”來填充數(shù)據(jù)未使用的二進制位。在計算機中,不是所有數(shù)據(jù)都能夠完全使用所有的二進制位。例如,1是整數(shù)型數(shù)據(jù),在計算機中,內(nèi)存為1分配了32個位內(nèi)存大小,實際上1只占據(jù)一個位,為了使1被識別是整數(shù)型數(shù)據(jù),剩余位就要采用位填充的方法進行填充。在計算機網(wǎng)絡(luò)中,位填充也稱為比特填充。

位二進制數(shù)系統(tǒng)中,位簡記為b,也稱為比特,每個二進制數(shù)字0或1就是一個位(bit)。位是數(shù)據(jù)存儲的最小單位,其中8 bit 就稱為一個字節(jié)(Byte)。計算機中的CPU位數(shù)指的是CPU一次能處理的最大位數(shù)。例如32位計算機的CPU一個機器周期內(nèi)可以處理32位二進制數(shù)據(jù)的計算機。

位填充技術(shù)在HDLC的幀結(jié)構(gòu)中,帶填充位的首尾標(biāo)志法允許數(shù)據(jù)幀包含任意個位,而且也允許每個字符的編碼包含任意個位,采用統(tǒng)一的幀格式,以特定的位序列進行幀同步和定界。帶填充位的首尾標(biāo)志法工作原理是:每一幀使用一個特殊的位模式,即01111110作為開始和結(jié)束標(biāo)志字節(jié)。當(dāng)發(fā)送的數(shù)據(jù)鏈層在數(shù)據(jù)中遇到5個連續(xù)的1時,自動在其后插入一個0到輸出比特流中,這叫位填充技術(shù)。當(dāng)接收方看到5個連續(xù)的1后面跟著一個0時。自動將此0刪除1。

幀的頭部有8位標(biāo)識符,其以01111110模式在幀的兩端起定界作用。某個標(biāo)志字段可能既是一個幀的結(jié)束標(biāo)志,也是下一個幀的起始標(biāo)志。在接收一個幀時,站點也要繼續(xù)搜索這個序列,以判斷這個幀的階數(shù)。而HDLC協(xié)議中允許存在任意的二進制比特序列,所以01111110模式可能出現(xiàn)在幀中間的某個地方,從而破壞同步。為了避免這種情況,使用了位填充。

方法:在幀的傳輸起始標(biāo)志和結(jié)束標(biāo)志之間,每當(dāng)出現(xiàn)5個1之后,發(fā)送器就會插入一個附加的0.一旦有5個1模式出現(xiàn),就會檢查第6個比特。若為0,該比特將被刪除。若為1,且第7個比特為0,那么這個組合被認為是標(biāo)志字段。若第六位和第七位都為1,則此時處于異常終止?fàn)顟B(tài)。

比特填充方式當(dāng)同步數(shù)據(jù)信號與數(shù)據(jù)端局的時鐘是異步關(guān)系時,可以用緩沖存儲器使輸入輸出信號同步。其原理是首先將多路數(shù)據(jù)信號復(fù)用成一次群,然后以其脈沖速率將一次群輸入數(shù)據(jù)信號寄入緩存器。當(dāng)輸入速率比緩沖存儲器的讀出速率稍慢時,會出現(xiàn)信號尚未到達就要讀出的情況 , 這時就要插入填充脈沖,并把填沖脈沖的信息傳到接收端。接收端收到填充指示信息就抹去該填電路交換,充脈沖,然后把脈沖展成一定間隔,從而恢復(fù)原始數(shù)據(jù)信號。這種方法只限于 傳輸同步數(shù)據(jù)信號。

數(shù)的機器碼原碼電子計算機中數(shù)的一種表示形式。數(shù)的原碼形式除掉其符號表示位外與原來數(shù)的絕對值形式一樣,只是數(shù)的正負符號分別用“0”和“1”表示。例如,+46的二進制數(shù)原碼表示為00100110,而-46的二進制數(shù)原碼表示為10100110(第一位為符號表示位)。數(shù)值“0”則有兩種原碼表示:“+0”為00000000;“-0”為10000000.原碼表示法對于數(shù)的乘除運算相當(dāng)方便,但對加減運算則較復(fù)雜。在兩個數(shù)進行加減運算時,需要判定它們的符號和絕對值大小才能確定操作關(guān)系和操作類型。為了簡化處理機的加減運算,通常很少采用原碼表示法,而是采用二進制補碼或二進制反碼表示數(shù)據(jù)2。

補碼計算機中一種數(shù)的表示形式。在基數(shù)計數(shù)制中,從基數(shù)減1后分別減去某數(shù)的每一位數(shù)字,然后再加1所得到的數(shù).對于正數(shù),其二進制補碼的表示式和原碼相同;對于負數(shù),其補碼表示式是將其反碼的最低位再加1而得到。例如,二進制數(shù)00101110的補碼仍為00101110;10101110的反碼是11010001,其補碼為11010001+1=11010010.在補碼表示式中,數(shù)值0的補碼是惟一的,即00000000(全零)。補碼表示法對正負數(shù)的加減運算相當(dāng)方便。利用補碼可使減法運算轉(zhuǎn)化為加法運算,這樣在計算機中就可用加法器來進行加減運算。

反碼亦稱基數(shù)減1補碼。計算機中數(shù)的表示形式之一,是基數(shù)計數(shù)制中以基數(shù)減1后分別減去每一位數(shù)字后所得到的數(shù)。例如,二進制計數(shù)制中,基數(shù)是2,基數(shù)減1為1,則-0101101的反碼是111111-0101101=1010010;十進制計數(shù)制中,基數(shù)是10,基數(shù)減1為9,則-0543的反碼是9999-0543=9456。對于正數(shù),二進制反碼的表示式和原碼相同;對于負數(shù),其二進制反碼表示式是將二進制數(shù)值表示式中的0改為1,1改為0,再冠以負號1.例如00101110的反碼仍為00101110;10101110的反碼為11010001。