声明的包“”与期望的包“”不匹配
1 /**
2 在位运算里面,其实大多数都是进行二进制运算的,也就是0和1,之间的运算!
3
4 以下例子里面:0代表假,1代表真;
5
6 按位与:&
7
8 真与真=真;(1&1=1)
9
10 假与假=假;(0&0=0)
11
12 真与假=假;(1&0=0)
13
14 假与真=假 ;(0&1=0)
15
16 总结(在按位与里面,逢假(0)必假(0));
17
18 -----------------------------------------------------------------
19 按位或:|
20
21 真与真=真;(1|1=1)
22
23 假与假=假;(0|0=0)
24
25 真与假=假;(1|0=1)
26
27 假与真=假 ;(0|1=1)
28
29 总结(在按位或里面,逢真(1)必真(1));
30
31 -----------------------------------------------------------------
32 按位异或:^
33
34 真与真=真;(1^1=0)
35
36 假与假=假;(0^0=0)
37
38 真与假=假;(1^0=1)
39
40 假与真=假;(0^1=1)
41
42 总结(在按位或里面,相同就(0)不同则(1));
43
44 ----------------------------------------------------------------
45 按位非~
46
47 这个我思前想后了很久,我觉得我不好更通俗的讲解;
48 (请原谅,我尽可能的保持通俗)
49 我要是跟你讲这个,你需要了解一点基本知识,才比较好理解一点!
50
51 你了解这个:(源码--反码---补码),我比较好讲一点!
52
53 a:所有字面值常量(你暂时理解基本数字):他们在内存里面存储的时候,都是以二进制的补码形式存在的!
54
55 b:不管正数还是负数,在内存里面存储都是补码!
56
57 c:不同点就是:正数的源码,反码,补码,都一样!
58
59 d:负数则不一样,一个负数的补码,是该正数的源码--->逐位取反--->然后末尾+1--->得到的就是该负数在内存里面存储的形式(补码)!
60
61 e:正数的最高位,即(最左边第一位是0,其他位有效值位),负数的最高位,即(最左边第一位是1,其他位是有效数值位!)
62
63 好了,基本知识我说完了,不好意思我只有这能力了,能不能看懂完全看造化了!
64
65 --->>进入主题:
66
67 按位非,是一元运算符:
68
69 它的作用是一把个数字的补码,逐位取反,得到另外一个数字的补码!这个我觉得需要举例比较容易理解一点:
70
71 例子:假如(非5:~5),因为5是正数,所以5的二进制在内存里面形式都一样,举短一点的吧,byte类型,8位!
72
73 0 0 0 0 0 1 0 1<<---5的二进制;
74
75 1 1 1 1 1 0 1 0<<---按位非~,0变1,1变0(变完以后,这个是另外一个数字的补码,因为是负数,我们不好看,但是我们可以还原他的正数,就知道该数是几了!)
76
77 0 0 0 0 0 1 0 0<<---按照上面d步骤逆向过来,末尾-1--->>逐位取反--->>得到该数正数的原码!
78
79 所以你看这个数字有效位是4;所以,上面的那个负数补码就是-4,总结( ~5 = -4 );
80
81 我天,我都尽可能说详细了...还是觉得怕你看不明白!
82
83 --------------------------------------------------------------------------------
84
85 左移:<<(理解是乘法,2的n次幂,2是底数!)--->>低位补零
86
87 5<<2=20 等价 5x(2x2)=20
88 6<<3=48 等价 6x(2x2x2)=48
89 4<<4=64 等价 4x(2x2x2x2)=64
90
91 右移:>>(理解是除法,倍率同上)---->>如果是正数,在高位补零,如果是负数,则在高位补1
92 8>>2=2 等价 8÷(2x2)=2;
93 16>>3=2 等价 16÷(2x2x2)=2;
94 -16>>3=-2 等价 -16÷(2x2x2)=-2;
95
96 无符号右移>>>(和右移是一回事,区别在后面)--->不管正负数:高位都是补0;
97
98 16>>3=2 等价 16÷(2x2x2)=2;
99 -16>>3=-2 等价 16÷(2x2x2)=2;
100
101 (不管正负还是负数,结果都是正数,懂了?这就是无符号右移的区别!)
102
103 -------------------------------------------------------------------------------
104
105 这些知识都是非常基础的知识,很关键,也很重要,如果我说的你看不懂,也没关系,你可以跳过这一步,向后面学习
106
107 学一段时间后,在回头看看..会恍然大悟的!!
108
109 不好意思解答能力有限:不足之处还请路人..指点!!
110 */