arduino Byte数据类型和按位运算

Byte数据类型

byte数据类型 占用一个字节的存储空间,取值范围在0到255之间。

byte数据类型可以用来存储二进制数据,很方便。

下面定义一个byte数据类型的变量:

byte outputs=B11111111

前面的B是告诉arduino将该变量读成二进制数字,而不是十进制的255。

例子:

void setup()
{

  // put your setup code here, to run once:

Serial.begin(9600);

}


void loop()
{

  // put your main code here, to run repeatedly:

for(int i=0;

i<256;

i++)

{

  Serial.print(“base-10:”);

 
Serial.println(i,DEC);

  Serial.print(“base-2:”);

 
Serial.println(i,BIN);

 
delay(100);

 
}

}

串口输出结果如图:

arduino Byte数据类型和按位运算

位操作函数:

    bitRead() 函数读取一个数的位。

    bitRead(x, n) ,X:想要被读取的数;

                             n:被读取的位,0是最重要(最右边)的位,该位的值为0或1

    bitWrite() 函数在位上写入数字变量

    bitWrite(x, n, b)   X:要写入的数值变量;

                               n:要写入的数值变量的位,从0开始是最低(最右边)的位

                               b:写入位的数值(0或1)

例子:

void setup()
{

  // put your setup code here, to run once:

Serial.begin(9600);

}

byte a=B10101010;


void loop()
{

  // put your main code here, to run repeatedly:

 
int  msb=bitRead(a,0);

 
int lsb=bitRead(a,7);

  Serial.print(“MSB:”);

 
Serial.println(msb);

  Serial.print(“LSB:”);

 
Serial.println(lsb);

 
delay(500);

  for(int i=0;

i<7;

i++)

 {

    bitWrite(a,i,0);

   
}

    Serial.print(“a=”);

   
Serial.println(a,BIN);

    delay(500);

}

运行结果如下:

MSB:0

LSB:1

a=10000000

MSB:0

LSB:1

a=10000000

MSB:0

LSB:1

a=10000000

MSB:0

LSB:1

a=10000000

MSB:0

LSB:1

a=10000000

………..