回覆列表
  • 1 # taisi4602

    “C語言裡怎樣提取一個十六進位制數的最高位?”具體解決方案如下:解決方案1:你是不是想這樣/對於0x30,3是最高位,0是最低位?如果是的話那就這樣辦:首先不同型別處理方法不同,int型是2位元組,伱可以這樣最高為提取,int a=b&0xf09(b為提取物件),最地位int a=b&0x0f(b為提取物件),long型是4位元組伱可以這樣,long a=b&0xf000,long a=b&0x000f;還有什麼再問那稍加修改:int a=b&1000000000000000b,int a=b&0000000000000001b,long a=b&10000000000000000000000000000000b,int a=b&00000000000000000000000000000001b;這是2進位制數的位操作,雖然看起來麻煩,但是效率最高,其他還有方法,但是在微控制器中不推薦如果你學過彙編這點很好理解,沒學過也沒事,我現在說給你聽,這裡提取取位用到的是c語言種的為操作,&(與操作)的定義是:1&1=1,1&0=0,0&1=0,0&0=0,|(或操作)的定義是:1|1=1,1|0=1,0|1=1,0|0=0,所以要提取二進位制中的某一位,思想是保留那一位,其餘為全為0,這樣就&運算子就可以輕鬆做到,比如0011&0001=0001,提取最低位,0011&1000=1000,提取最高位,還有就是在c語言裡int型是2位元組,long型是4位元組解決方案2:樓主的意思應該a=0x30;b=a>>7;得到的b是0x30的最高位

  • 中秋節和大豐收的關聯?
  • 燴麵湯料配方大全?