C語言裡如何讀取8位資料的某一位

2025-07-05 11:25:29 字數 3215 閱讀 1464

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...