位移操作 高位移向地位 設定或修改任意位數的值。

2022-08-29 18:45:10 字數 1793 閱讀 7921

①buf[npacklen++] = (byte)( m_dwidcode >> 24);m_dwidcode 有四個位元組,一共32位,移動24位,就是把高位元組移向低位元組。(byte)擷取乙個位元組;

②buf[npacklen++] = (byte)( m_dwidcode >> 16);

③buf[npacklen++] = (byte)( m_dwidcode >> 8);

④buf[npacklen++] = (byte)( m_dwidcode);

m_dwidcode 有四個位元組,如下面;

a b c d 

①:移動24位,得到結果 0000000 a,用(byte)擷取乙個位元組,以為byte佔乙個自己,如果是unshort 的話,就是2位元組;

②移動16位,得到結果 o o a b ,用(byte)擷取乙個位元組,得到b.

③ 移動8位 得到結果 0 a b c ,用(byte)擷取乙個位元組,得到c

④。直接用(byte)擷取乙個位元組,得到低位元組。d;

按位與可以有兩種作用:

(1)清零。如果想將乙個單元清零,即使其全部二進位制位為0,只要與乙個各位都為零的數值相與,結果為零。

(2)取乙個數中指定位

方法:找乙個數,對應x要取的位,該數的對應位為1,其餘位為零,此數與x進行「與運算」可以得到x中的指定位。

例:設x=10101110,

取x的低4位,用 x & 0000 1111 = 0000 1110 即可得到;

還可用來 取x的2、4、6位。

低位元組在前的資料的處理:

byte byinfobuf[2];//獲取後的資料時低位元組在前的;

int fno = cp5200_parseopenfileret( hobj , byrecvbuf , nreadlen , byinfobuf , sizeof(byinfobuf) );

word dno = byinfobuf[0] + (byinfobuf[1]<<8);//因為byinfobuf[1] 是高位元組,所有向左移動乙個位元組,也就是8為,加上byinfobuf[0],就是原來的值。

比如 byinfobuf[0] = 00000001;

byinfobuf[1] = 00000100;

byinfobuf[1]<<8 = 00000100 00000000;

加上 byinfobuf[0]                  00000001

就得到                  00000100  00000001

設定、查詢、任意位數的值;

1.如果要查詢任意一位的值:

byte bydata =0x05;

如果要查詢第三位的值;

首先要判斷第三位的值是0或者是1;

byte temp = bydata&0000100//也就是  bydata&0x04;

if(temp>0)//表明第三位是1;

bydata = bydata&11111011//這是第三位的值變為0,其它的值不變;

else//表明第三位是1

2.修改任意位的值

想修改第3位的值為0;

bydata = bydata&11111011//這樣不管第三位原來的值是1或者是0,現在第三位的值一定是0;

想修改第3位的值為1;

bydata = bydata|00000100//這樣不管第三位原來的值是1或者是0,現在第三位的值一定是1;

如果想把第二位改為1;

過程就是這個樣子

bydata = bydata|00000010//這樣不管第2位原來的值是1或者是0,現在第三位的值一定是1;

windows web Linux的位移操作

左移32位,a為1。左移33位,a為2。int main rack 1,左移32位 編譯時有警告 left shift cout width,但執行結果為1。左移33位,結果為2。結果 和windows保持一致。rack 1,左移32位 編譯時有警告 left shift cout width,執行...

c語言中的位移位操作

參考 先要了解一下c語言裡所有的位運算都是指二進位制數的位運算。即使輸入的是十進位制的數,在記憶體中也是儲存為二進位制形式。用法 格式是 a 0。功能 將整型數a按二進位制位向左移動m位,高位移出後,低位補0。用法 格式是 a m,a和m必須是整型表示式,要求m 0。功能 將整型數a按二進位制位向右...

c語言中的位移位操作

先要了解一下c語言裡所有的位運算都是指二進位制數的位運算。即使輸入的是十進位制的數,在記憶體中也是儲存為二進位制形式。用法 格式是 a 0。功能 將整型數a按二進位制位向左移動m位,高位移出後,低位補0。用法 格式是 a m,a和m必須是整型表示式,要求m 0。功能 將整型數a按二進位制位向右移動m...