一、原码、补码、反码
1、正数的补码和反码都是本身,负数的反码的符号位不变,其它位取反,0表示正数,1表示负数,负数的补码在最后一位加1
3的原码 00000000 00000000 00000000 00000011
反码 00000000 00000000 00000000 00000011
补码 00000000 00000000 00000000 00000011
-3的原码 10000000 00000000 00000000 00000011
反码 111111111 111111111 111111111 11111100
补码 111111111 111111111 111111111 11111101
2、计算机cpu的计算都是基于补码计算的,反码在计算过程中符号位当做“数”来处理
3+(-3):
3的补码: 00000000 00000000 00000000 00000011
-3的补码: 111111111 111111111 111111111 11111101
-----------------------------------------------------------------------------------------------
00000000 00000000 00000000 00000000
二、逻辑与、或、非
逻辑与、或、非是指按位取与、按位取或、按位取非(反),一个整数有32个位,所以逻辑操作运算符都是基于二进制进行的
1 & 1 ==》 1
1 & 0 ==》 0
0 & 0 ==》 0
&操作符是全1才为1,否则为0
1 | 1 ==》1
1 | 0 ==》 1
0 | 0 ==》 0
|操作符是有1就为1,全0才为0
!1 ==》 0
!0 ==》 1
^操作符是取反
三、管理开关状态
1、设置当前状态 $state
2、指定的灯D5打开 $state = $state | D5
3、指定的灯D1关闭 $state = $state & (~D1);
四、运算符的优先级
1、括号最优先,赋值最后
2、先乘除后加减
3、单目运算符>算术运算符>比较运算符>逻辑运算符(除了非运算符)