① c語言中按位與(&)運算符是什麼意思
是將二進制數按照位的對應相與,得到一個新的二進制數。1與0為0;1與1為1;0與0為0。
分析如下:
就是二進制的每一位相與。
比如:1010 0011& 0000 1111,結果為0000 0011。也就是與上0相當於把那位數清0,與上1相當於把那位保留。
(1)c語言位擴展閱讀:
1、按位與運算符"&"是雙目運算符。 其功能是參與運算的兩數各對應的二進位相與。只有對應的兩個二進位均為1時,結果位才為1 ,否則為0。參與運算的數以補碼方式出現。
例如:9&5可寫算式如下: 00001001 (9的二進制補碼)&00000101 (5的二進制補碼) 00000001 (1的二進制補碼)可見9&5=1。 按位與運算通常用來對某些位清0或保留某些位。例如把a 的高八位清 0 , 保留低八位, 可作 a&255 運算 ( 255 的二進制數為11111111)。
② C語言位運算
按位與 | 按位或 ^
按位異或 ~ 取反 <<
左移 >> 右移<<
1. 按位與運算。按位與運算符"&"是雙目運算符。其功能是參與運算的兩數各對應的二進位相與。只有對應的兩個二進位均為1時,結果位才為1 ,否則為0。參與運算的數以補碼方式出現。
2. 按位或運算。按位或運算符「|」是雙目運算符。其功能是參與運算的兩數各對應的二進位相或。只要對應的二個二進位有一個為1時,結果位就為1。參與運算的兩個數均以補碼出現。 例如:9|5可寫算式如下: 00001001|00000101 00001101 (十進制為13)可見9|5=13 main(){ int a=9,b=5,c; c=a|b; printf("a=%d/nb=%d/nc=%d/n",a,b,c); }
3. 按位異或運算。按位異或運算符「^」是雙目運算符。其功能是參與運算的兩數各對應的二進位相異或,當兩對應的二進位相異時,結果為1。參與運算數仍以補碼出現,例如9^5可寫成算式如下: 00001001^00000101 00001100 (十進制為12) main(){ int a=9; a=a^15; printf("a=%d/n",a); }。
5. 左移運算。左移運算符「<<」是雙目運算符。其功能把「<< 」左邊的運算數的各二進位全部左移若干位,由「<<」右邊的數指定移動的位數, 高位丟棄,低位補0。例如: a<<4 指把a的各二進位向左移動4位。如a=00000011(十進制3),左移4位後為00110000(十進制48)。
③ C語言里 值位 是什麼啊
位值制即每個數碼所表示的數值,不僅取決於這個數碼本身,而且取決於它在記數中所處的位置。比如在十進位值制中,同樣是一個數碼"2",放在個位上表示2,放在十位上就表示20(2*10),放在百位上就表示200(2*10^2),放在千位上就表示2000(2*10^3)……又如在二進位值制中,1放在個位上就表示1,放在十位上就表示2(1*2),放在百位上則表示4(1*2^2)……
④ c語言中按位或|
這里涉及到的是位操作。
首先你需要了解內存中的數字存儲形式(二進制)。這里的a是一個標識符,用於存儲標記。具體而言,a是一個八個比特長的變數。比如0b00000000,0b00001110等等。用十六進制可以簡寫為0x00, 0x0E等等(這里兩個例子沒有任何含義)
在C語言中「<<」表示移位操作,比如0b00000001左移3位,就會變成0b00001000;左移2位就是0b00000100;等等。
然後你這里沒有給出digitalRead()函數的返回類型,我認為是0或1。在這種情況下,0寫成8位二進制是0b00000000,左移任何位都是0,如果是1的話,左移x位表示把從右往左數第x+1位變成1,比如:1<<3表示0b00001000,從右至左第4位變成1。
接下來,你有4個digitalRead函數,但是你想同時關心4個返回值。怎麼辦呢?我把第x個返回值放在從右往左數第x位上。比如0b00000110,表示第二、三個返回值是1,剩下兩個返回值是0。那麼你按上面的移位操作,可以得到這樣4個數:
0b 0000 0000 (返回值是0)
0b 0000 0100 (返回值是1)
0b 0000 0010 (返回值是1)
0b 0000 0000 (返回值是0)
按位進行「或」操作。「或」操作你肯定明白,有1就是1,沒1才是0
所以根據結果可以知道4個返回值是怎麼樣的。於是在switch語句中的返回值表明,如果是0x00(表示4個返回值是0),或是0x0F(4個返回值都是1)(F是4個1),則進行某種操作。
不知道明白了沒?
⑤ c語言里,位 位元組 B都是什麼關系
C語言中:
1 Byte(位元組) = 8 Bit(位)
一般32位系統下
常用的變數類型,
char:1byte(8bit)
int:4byte(32bit)
short:2byte(16bit)
⑥ c語言的位表示什麼
內存存儲單元也就是位元組應該是正確的,8位、16位是指比特,
1位元組=8比特,也就是8個二進制信息。
⑦ C語言中標志位的用法
一般標志位用來跳轉和判斷的。
在嵌套循環內,有時不能直接跳轉出來,可以設置一個標志位。
當條件滿足時,自動跳轉。
⑧ c語言位運算
這個很簡單,你打開電腦的計算器,將521輸入,然後用二進制顯示,你看到的是:1000001001,
123是:1111011;與123 按位與的結果就是0000 1001;用十進制顯示的時候就是9,其他的計算也是這樣算出來的,你試下就知道了,在此我就不一一舉例了。
&:這是與操作,只有1&1才能是1
|:這是或操作,有一個是1結果就是1
~:取反操作,
⑨ c語言位變數定義
在c語言中定義bit型變數,可以使用位域來自定義。
位域的定義和位域變數的說明位域定義與結構定義相仿,其形式為:
struct 位域結構名
{ 位域列表 };
其中位域列表的形式為: 類型說明符 位域名:位域長度;
示例:通過位域來計算IEEE754浮點數標准中,單精度浮點數的最大值、最小值以及最小弱規范數。
#include <stdio.h>
typedef struct FP_SINGLE
{
unsigned __int32 fraction : 23;
unsigned __int32 exp : 8;
unsigned __int32 sign : 1;
} fp_single;
int main()
{
float x;
fp_single * fp_s = (fp_single *)&x;
fp_s->sign = 0;
fp_s->exp = 0xfe;
fp_s->fraction = 0x7fffff;
printf ("float 最大數: %le\n",(double)x);
fp_s->sign = 0;
fp_s->exp = 0x1;
fp_s->fraction = 0x0;
printf ("float 最小數: %le\n",(double)x);
fp_s->sign = 0;
fp_s->exp = 0;
fp_s->fraction = 0x1;
printf ("float 最小弱規范數:%le\n\n",(double)x);
return 0;
}