PORTB|=(1<<2);什么意思?

C语言的一句代码

先明确一点:内存里都是0和1
1<<k就是创建一个1, 移动到第k位
1<<2, 用四位二进制数表示就是0100,
如果赋值给int, 值就是4
~是反转的意思, ~0100就是1011
比如一个short, 1<<2就是0000000000000100
~(1<<2)就是1111111111111011
由于最高位是1, 所以这个数字如果是signed,就是负数,
unsigned,就是一个很大的正数
signed short型数字1111111111111011
值可以这样算, 整个数字反转, 然后+1
反转: 就回到了0000000000000100
+1: 就是0000000000000101
0101是5, 是1111111111111011的绝对值, 所以short s=~(1<<2); s就是-5
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-19
1<<2是移位运算,结果是4
|=是按位或运算,结果就是PORTB这个变量和4按位或运算后的结果本回答被提问者采纳
第2个回答  2018-06-02
明白0001向左移动两位就明白了
相似回答