C If语句条件下的二进制AND运算符
我不明白这段代码。有什么帮助吗C If语句条件下的二进制AND运算符,c,if-statement,for-loop,operators,C,If Statement,For Loop,Operators,我不明白这段代码。有什么帮助吗 for(j = 0x40; j > 0; j = j >> 1) { if(0xC9 & j) LED = 1; else LED = 0; delay_us(10); CLK = 1; delay_us(10); CLK = 0; } if-语句计算0xC9&j,如果结果为非零,则将其视为“true”(LED=1
for(j = 0x40; j > 0; j = j >> 1)
{
if(0xC9 & j)
LED = 1;
else
LED = 0;
delay_us(10);
CLK = 1;
delay_us(10);
CLK = 0;
}
if
-语句计算0xC9&j
,如果结果为非零,则将其视为“true”(LED=1
),否则为“false”(LED=0
)
在C(和许多其他语言)中,在布尔上下文中使用时,非零表示“真”,零表示“假”。if-statement求值为
0xC9&j
,如果结果为非零,则视为“真”(LED=1
),否则为“假”(LED=0
)
在C(和许多其他语言)中,在布尔上下文中使用非零表示“真”,零表示“假”。for循环有点棘手。此操作:
j = j >> 1
基本上是一个整数除以2。所有位都从1位向右移位。例如:
unsigned char foo = 0x20; // Binary : 0010 0000, Decimal : 32
foo = foo >> 1; //Hex : 0x10, Binary : 0001 0000, Decimal : 16
此if语句:
if(0xC9 & j)
正在测试循环变量中的某些位是否设置为1。0xC9是位7、6、3和0设置为1的数字(0xC9=0b11001001=201)。如果这些位中的任何一位等于j中的“1”,则该条件为真
这并不是一个真正的用户友好代码,编写它的人应该使用一些#define来提高可读性。算法也不清楚,使用逐位运算不是编写不可读代码的借口。for循环有点棘手。此操作:
j = j >> 1
基本上是一个整数除以2。所有位都从1位向右移位。例如:
unsigned char foo = 0x20; // Binary : 0010 0000, Decimal : 32
foo = foo >> 1; //Hex : 0x10, Binary : 0001 0000, Decimal : 16
此if语句:
if(0xC9 & j)
正在测试循环变量中的某些位是否设置为1。0xC9是位7、6、3和0设置为1的数字(0xC9=0b11001001=201)。如果这些位中的任何一位等于j中的“1”,则该条件为真
这并不是一个真正的用户友好代码,编写它的人应该使用一些#define来提高可读性。算法也不清楚,使用位运算并不是编写不可读代码的借口。这是二进制和运算符。你到底不明白什么?解雇那个缩进代码的实习生。它是怎么工作的?if(condition)中传递了什么条件?
if
-语句表达式具有位and运算符。你想知道这是怎么回事吗?你读过吗?或者是C处理布尔值的方式?它是二进制和运算符。你到底不明白什么?解雇那个缩进代码的实习生。它是怎么工作的?if(condition)中传递了什么条件?if
-语句表达式具有位and运算符。你想知道这是怎么回事吗?你读过吗?或者是C如何处理布尔值?