- 分享
Arduino 编程里,`bitRead()`
- 2025-7-16 17:25:03 @
在 Arduino 编程里,bitRead()
是一个用于操作二进制位的内置函数,作用是读取一个数据(通常是字节、整数等)中“指定位置”的二进制位值(0 或 1) ,核心是帮你便捷地提取、判断单个二进制位的状态。
详细拆解
函数格式:bitRead(val, n)
val
:要读取的原始数据(可以是字节、整数等,本质是二进制存储的数值 )。n
:要读取的位的位置(从0
开始计数,0
表示最右端的“最低位”,1
对应右侧第二位,以此类推 )。- 返回值:该位置上的二进制值(
0
或1
)。
举个实际例子(对应你资料里的图)
比如资料里的 bitRead(0b0110000, 2)
:
val = 0b0110000
(二进制,对应十进制是48
),把它的二进制位展开看是:0 1 1 0 0 0 0
(注意:实际是 8 位的话,高位补 0 就是00110000
,但写法简化了 )。n = 2
:表示读取从右往左数的第 3 位(因为从 0 开始数 )。- 对应位的值是
0
,所以函数返回0
。
结合你的代码场景(数码管)
你代码里用了共阳数码管,这类数码管的点亮逻辑是:给低电平(0
)时 LED 点亮,高电平(1
)时熄灭。而数组 disNum
里存的是高电平熄灭、低电平点亮的原始编码(比如 0b11111100
表示数码管显示 0
时,哪些段熄灭/点亮 )。
因为要控制数码管点亮,需要拿到“某一段是否该点亮”(即需要低电平),所以用 bitRead()
读取原始编码的某一位后,还要用 !
取反(把原本的 1
/0
翻转,让最终输出符合共阳数码管的点亮逻辑 )。
简单说,bitRead()
就是 Arduino 给你提供的“便捷工具”,让你不用手动去做二进制移位、掩码运算,就能直接拿到某个数的某一位是 0
还是 1
,在操作硬件(比如数码管、控制引脚电平)时特别常用~
0 条评论
目前还没有评论...