下面代碼中bitget和bitset是bitrotleft中要用到的簡(jiǎn)單函數(shù),功能分別是取得和設(shè)置指定位的bit值,我很難看懂bitrotleft函數(shù),雖然書上簡(jiǎn)介寫的很簡(jiǎn)單:輪轉(zhuǎn)緩沖區(qū)bits(含size位),將位值向左移count位.此操作完成后,處于最左端的count位移動(dòng)到緩沖區(qū)最右端,而且其他的位也相應(yīng)的輪轉(zhuǎn).但是我在main函數(shù)的測(cè)試中好像并不如意,代碼如下:#include#includeintbit_get(constunsignedchar*bits,intpos){unsignedcharmask;inti;/*設(shè)置掩碼*/mask=0x80;for(i=0;i>1;/*獲得當(dāng)前位的數(shù)值*/return(((mask&bits[(int)(pos/8)])==mask)?1:0);}voidbit_set(unsignedchar*bits,intpos,intstate){unsignedmask;inti;mask=0x80;for(i=0;i>1;if(state)bits[pos/8]|=mask;elsebits[pos/8]&=(~mask);return;}voidbit_rot_left(unsignedchar*bits,intsize,intcount){intfbit,lbit,i,j;/*Rotatethebuffertotheleftthespecifiednumberofbits.*/if(size>0){for(j=0;j
數(shù)據(jù)壓縮位操作中的一個(gè)函數(shù)bit_rot_left "位向左輪轉(zhuǎn)"看不懂,望指點(diǎn)
蕪湖不蕪
2019-04-13 08:45:42