在C语言中P0 = i + (i<<4);是什么意思

如题所述

你这里应该是单片机的C语言编程,P0为单片机的IO口
P0=i+(i<<4);就是把一个数送到单片机P0口上。

如果
i==0:P0=0+(0<<4) 还是0
i==1:P0=1+(1<<4) ---> 看二进制:0000 0001 + 0001 0000 ==00001 0001 为17
i<<4:就是把i这个数左移到第4位 0001 0000 (注意:右边第1个0,在位这种操作里面叫做第0位,就跟数组下标是从0开始一样的道理)
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-10-15
<<左位移运算符
>>左位移运算符

i<<4把i向左移4个位置,那i的值就会被改变
i+(i<<4)把i<<4位移后的值与i相加,

假设i=10
那么i<<4=160
I+(i<<4)=10+160=170

16位表示
0000 0000 0000 1010 i=10
0000 0000 1010 0000 i<<4

0000 0000 0000 1010
+0000 0000 1010 0000
---------------------------------------
0000 0000 1010 1010

转为10进制,为170

希望回答对你有帮助本回答被提问者采纳
第2个回答  2011-10-15
<<,用来将一个数的各二进制位全部左移若干位。i<<4 ,把 i 的 所有二进制位 全部 左移四位,做为表达式的值。高位移出(舍弃),低位的空位补零。但 i 还保持原值不变。
P0 = i + (i<<4); 就是先把 i 左移4位,在与i (原值)相加。
第3个回答  2011-10-15
就是把变量i的值 和i的值左移四位所得到的数的和相加赋值给PO

在C语言中P0 = i + (i<<4);是什么意思
P0=i+(i<<4);就是把一个数送到单片机P0口上。如果 i==0:P0=0+(0<<4) 还是0 i==1:P0=1+(1<<4) ---> 看二进制:0000 0001 + 0001 0000 ==00001 0001 为17 i<<4:就是把i这个数左移到第4位 0001 0000 (注意:右边第1个0,在位这种操作里面叫做第0位,就跟数组下...

一段单片机C语言,求大神逐句翻译一下。
for(i=0;i<4;i++) \/\/4次循环 { P0=seg7(k); \/\/P0=第K个元素的值 k++; \/\/k=k+1 P1=_cror_(j,i);

C语言中这句话是什么意思
第一个参数表示的是选择哪一组GPIO(端口GPIOA到GPIOI可选),现在选择的GPIOD。第二个参数表示的是选择的GPIO组中哪几个引脚输出低电平,每个引脚对应一个bit,那么(GPIO_PIN_0|GPIO_PIN_2|GPIO_PIN_4|GPIO_PIN_7)进行或操作,就表示0,2,4,7四个引脚对应的bit都有效,也就是这四个引脚都...

C语言中 P0=~(1<<K); 是什么意思??求详解
1<<k就是创建一个1, 移动到第k位 1<<2, 用四位二进制数表示就是0100,如果赋值给int, 值就是4 ~是反转的意思, ~0100就是1011 比如一个short, 1<<2就是0000000000000100 ~(1<<2)就是1111111111111011 由于最高位是1, 所以这个数字如果是signed,就是负数,unsigned,就是一个很大的正数 signed...

C语言学生成绩管理系统
C语言学生成绩管理系统 有4个学生,每个学生有三门课成绩,从键盘上输入以上数据,计算每个学生的平均分。并把这些信息(包括学号、姓名、班级、三门课的成绩及平均分)保存到一个文件(score.txt)中,并显示在... 有4个学生,每个学生有三门课成绩,从键盘上输入以上数据,计算每个学生的平均分。并把这些信息(包括学号...

P0=~(1<<0);为什么要取反
回答:您好,我来解答你的问题,我系统的学习了C语言j&在C语言中可能表示两种运算符。如果运算对象只有一个且为右操作数,那么&为取地址运算符,结果为操作对象的地址。例如&a(假设a是一个左值,即具有具体的可访问的地址)结果为a的地址。如果运算对象有两个,那么&表示位与运算。结果中...

C语言中P0是什么意思?
就是P0重复定义了 C语言是一门面向过程、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。尽管C语言提供了许多低级处理的功能,但仍然保持着跨平台的特性,以一个标准规格...

51单片机数码管显示学号
for( i=0; i<N; i++ )for( j=0; j<114; j++ );} \/\/显示函数 void Display( void ){ u8 Dispbuf[4],i;for( i=0; i<4; i++ )\/\/将学号值赋给显示缓冲区 { Dispbuf[i] = Student_Id[flag+i];} for( i=0; i<4; i++ )\/\/显示数据 { P2 = Dispbit[i];P0 = ...

单片机怎么用c语言设置I\/O口输入或输出
例如:P3M0=0;P3M1=127;\/\/0-6推挽输出 P1M0=0;P1M1=255; \/\/all 推挽输出 而51单片机的所有IO引脚,在启动后默认都是1。因此,如之前没有对此引脚进行过置0操作的话,可以直接读该引脚。但为了保险起见,也为了使程序通用、可移植,最好在读取之前对此引脚置1。

单片机C语言中,如何读取P1口的数据,并将P1口读入的数据送到P0口输出
你这个程序是对的。但是有一点忽略了:P1口作为输入口,应该先置为ff 完整程序:while(1){ P1=0xff;\/\/这个就是忽略的地方 i=P1;P0=i;} 另外,下面这个也可以,以经过软件仿真通过。P1=P0;

相似回答