求助单片机C语言大神!!!uchar temp; temp=0; P1=temp;temp++;这怎么理解?
供稿:hz-xin.com 日期:2025-01-14
单片机c语言编程语句temp=temp<<1和temp=temp<<1+1怎么理解 ,他们有什么区别?
当 P1 = temp;...... temp++; if(temp==16) temp=0;就是循环输入 0——15
输出就是 Y0——Y15 不断循环
实际上计算机里面的都是二进制码,只不过我们表示成十进制的而已
在计算机内存中任然以二进制存储,只是显示给我们的是十进制数
XXXX0000——XXXX1111,X 表示无关位,左边高位,右边低位
temp=temp<<1表示将temp左移一位;temp=temp<<1+1则是将temp左移一位后加1。左移的含义:比如temp=00001111B(二进制),那么temp<<1的结果是00011110,也就是temp的数据位依次向左移动一位,最高位可以认为被舍弃,最低位由0补齐。这是基本的位运算,可以参考相关的C语法书目。
#include
#define uchar unsigned char
#define uint unsigned int
void main()
{
uint i;
uchar temp;
while(1)
{
temp = 0xfe;
for(i=0;i<8;i++)
{
P1 = temp;
delay(100);
temp <<= 1; //这样改后就可以实现依次点亮,之前是每次亮一灯。
}
}
}
当 P1 = temp;...... temp++; if(temp==16) temp=0;就是循环输入 0——15
输出就是 Y0——Y15 不断循环
实际上计算机里面的都是二进制码,只不过我们表示成十进制的而已
在计算机内存中任然以二进制存储,只是显示给我们的是十进制数
XXXX0000——XXXX1111,X 表示无关位,左边高位,右边低位