位运算我只举个例子。主要的不是拿着数直接求值。关键是要知道步骤。
有步骤了,才好搞嘛!
我第一个就搞~取反运算
我多举个:《32位》1.~1
源码二进制: 00000000 00000000 00000000 00000001
取反码减去1: 11111111 11111111 11111111 11111101
取反: 10000000 00000000 00000000 00000010 得-2
1.~2
00000000 00000000 00000000 00000010
11111111 11111111 11111111 11111100
10000000 00000000 00000000 00000011 得-3
第二个步骤与第一个步骤都是一样的依次省略了。
3.~16
00000000 00000000 00000000 00010000
11111111 11111111 11111111 11101110
10000000 00000000 00000000 00010001 得-17
~取反的是需要减去1
注意:意思就是《反码是 补码 -1》
最高位的那个1就是负数,人家说的符号位不变的意思,就是说的机器码上设置的那个,负数就是开头那个1,1代表负数了。
负数的补码 = 其反码 +1,也就是说第二步反码加上1
第二个没有了,>>和<<这两个是根据二进制位看走位,也可以去百科上看那个公式
其实只要记住要么乘以2,要么除以2,因为都是以2为机制的运算的
当然我说的都是大白话,没有什么专业术语,你能看懂就看懂了。看不懂就多在编译器上面都弄数字敲敲看。