0.考察++ -- += ==类似的这种符号
1.&和&&的区别
&可以视为逻辑运算 也可以视为位运算 &&只能当作逻辑运算来用
如果两个符号都当作逻辑运算来使用 如下区别
&前后两个条件都是true的时候 最终会结果为true
&&短路与 正常情况下 & 执行的结果是一致的
当前面的条件为false的时候 会发生短路 最终结果为false
2.最有效率的方式计算2*8的结果
00000010 2<<3相当于2乘以2的3次幂
×00001000 00000010
—————— 000 00010000==16
00000000 乘数刚好是2的次幂
00000000 5<<1 2*5 相当于2×5的一次幂
00000000
00000010
————————
00000010000==16
3.两个变量 int a = 1;int b = 2; 如何将两个变量的值进行互换
int a = 1;
int b = 2;
方式一 采用中间空间变量
int c = a;//将a空间的值赋值给c
a = b;//将b空间的值赋值给a
b = c;//将c空间的值赋值给b
好处比较容易理解 值不会出现问题 不好在于产生一个新的内存空间
方式二
a = a + b;//a空间存储的是两个元素的和 a==3 b没有变化 b==2
b = a - b;//利用两个元素的和减去原来的b 剩下的是原来的a b==1 a==3
a = a - b;//利用a空间两个元素的和 减 原来的a 剩下的是原来的b 赋值给a==2 b==1
好处是省略了一个新的空间 可能在+产生值越界问题
方式三 位运算
a = a^b;// 1^2==>001
001
010
011==3^2==>
010
001==>1
1^2^2==>1 用一个数字异或同一个数字两次 值不会改变
a==异或中间值x b==2
b = a^b; a==异或中间值x b==1
a = a^b; a==2 b==1
两个数字异或的中间值