1樓:
移位符號 >>
逐個獲取。或者 定義乙個結構體。
定義內用 :符號。。。來表明它是基於乙個byte內的位操作。
2樓:伊·梵
你要讀哪3位?
連著一起的3位,還是獨立的3位。
連一起: (val&(0x07<>n
0-2: (val&0x07)>>0
1-3: (val&0x0e)>>1
2-4: (val&0x1c)>>2
3-5: (val&0x38)>>3
4-6: (val&0x70)>>4
5-7l (val&0xe0)>>5
單獨第n位:
val&(0x1<>n
c語言中如何提取出乙個位元組的八位各自的狀態?
3樓:
port i/o操作常用寫法:定義8個位域,並且和乙個char放到聯合體中。
簡單寫一下:
位域用樓上的寫法就行。
union p1;
首先把位元組整體賦值,比如0xaa。
0xaa;則可直接使用各bit進行判斷,如:
if ( == 0 )
當然也可以直接對某一位賦值,如:
則變成0xab;
位域不建議定義成a1-a8,最好是a0-a7,或bit0-bit7。
不程式設計已好久,具體寫法可能不正確,但思路沒問題,謹供參考。
4樓:網友
我不知道有沒有直接的位運算算符能直接算出來,我自己印象是沒有的。
其它的替代方法,我提供一種演算法啊,把指向這個位元組的那個指標強制轉換成指向布林型變數的指標,讀出這個指標指向的資料,第一位出來了,指標自加1,再讀,讀出第二位,以此類推。。。
問題是,我同樣不記得c語言裡怎麼定義布林變數。。。
當然有種最笨的辦法,指標型別強制轉換為char,再用%b(記不清楚,反正你就用格式化輸出讓它輸出2進位格式就行)輸出來。。。然後自己看吧。。。
5樓:
這個是比較簡單的辦法:
通過構建資料結構來完成位操作,**如下:
typedef struct _aaa
aaa;main()
6樓:
按位與。
unsigned char a;
int r[8];
r[0] = a & 0x01; // 最低位r[1] = ( a & 0x02) >1;
r[2] = ( a & 0x04) >2;
r[3] = ( a & 0x08) >3;
r[4] = ( a & 0x10) >4;
r[5] = ( a & 0x20) >5;
r[6] = ( a & 0x40) >6;
r[7] = ( a & 0x80) >7; // 最高位。
怎麼用c語言獲取某一位的值
7樓:逍遙楚客
c語言中如何提取二進位數中的某一位?
檀香透窗欞。
ta獲得超過萬個贊。
聊聊關注成為第462位粉絲。
下面是三種方式:
通過模2除2(%2、/2)的方法。
num%2——取出二進位的最後一位。
num/2——右移去掉二進位的最後一位。
通過while迴圈,依次取出二進位的最後一位數字判斷是否為1,若為1則count++,while(num)只有當num變為0時迴圈結束。
問題:在測試-1出現bug,-1的二進位中應該有32個1,輸出卻為0。我們將-1帶入**中發現-1%2=0,count不增,然後-1/2=0,迴圈結束,故輸出count的值為0。
c語言可不可以按bit讀取資料,就是很大的資料想按bit一位一位的讀取出來,
8樓:hhq無悔
就我現在想出來的兩種方式,一種是以前看書有一種叫「位域」的東西,好像就是你要的這樣的。
還有一種,比較簡單,就是了解一下這兩組符號的用法,你會收益的<<(左移) >右移)這兩個操作的都是二進位的。
9樓:明通造化
樓主解決了麼?求指教……
10樓:青城孤子
本來資料就是一位一位的,當然可以一位一位的讀出來。
c語言中怎麼才能把乙個8位的資料(如0xa0)拆成一位一位分別儲存,比如說我要怎麼樣才能把
11樓:野文菜
可以存放在陣列裡,像這樣。
#include
int main()
for(int j=0;j<8;++j)
printf("%d",c[j]);
return 0;}
12樓:網友
可以採用在結構體中定義位域的方式,輕鬆實現按位儲存和使用位域值對應的變數。
13樓:來自小崗村歡喜 的夏侯淵
用位運算,&0x01就會把最左邊的那位取出來,然後右移這個數就是0xa0>>1,繼續&0x01就把第二位取出來了,這樣就都取出來了。
c語言中怎樣讀取乙個8位位元組某一位?
14樓:幽黯之林
bit a;
a=(adcpsra)&(0x08);
比如adcpsra=11011000,和。
00001000位與一下,就可以把該位取出來,結果是1,如果adcpsra=11010000,位與一下就是0,我說的對嗎。
c語言讀取資料問題,請大神幫我看看,讀取byte某幾位
15樓:吳道子
用移位運算子,提取a的第四至六位(a>>3)&7
你這個是取12到24位,所以用(a>>11)&23
c語言怎麼把乙個十六位資料拆成兩個八位,怎麼把兩個八位資料合成十六位,能舉例說明嗎
16樓:網友
你先給個例子,什麼樣的16位資料,什麼樣的8位資料?
17樓:網友
比如將十六進位數「2a12」拆成"2a"和"12",然後再把"2a"和"12"對調位置合成"122a"
#include
main()
c語言,如何檢測變數的資料型別,C語言,如何檢測變數的資料型別?
話說,你理解抄 錯了。型別的定義其實是為了讓人能更好的理解。對電腦來說,任何變數只有位元組大小的差異。我給你舉個例子,你就很好理解了 變數 a 在記憶體中用二進位制表示為 11111111111111111111111111111111 如果a 定義為int 則表示為 1,如果a定義為unsigne...
如何用C語言(C讀取點陣圖的畫素點RGB資訊
pdata裡面儲存的就是一個一個的colorref結構,你只需要通過bitmapinfoheader中的寬高等資訊,計算位移,就可以讀取某個點的rgb值了。還有一個簡單的辦法,你之前已經有membitmap這個cbitmap了,通過這個做更方便。通過selectobject將membitmap放到一...
C語言 編制程式,輸入位數不超過五位的正整數,判斷其是否為迴文數,如果是輸出「YES」
把數字當作字串讀入,然後用這個版函式就行了。int ishw char p include int main int argc,char const argv while 1 n1 n while n1 while i printf n d n1 d n n,n1 if n n1 printf ye...