声明的包“”与期望的包“”不匹配

  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         */

 

posted @ 2024-06-04 16:28  AP-TX4869  阅读(15)  评论(0编辑  收藏  举报