1、二进制和十进制的转换:基数x位次幂
10011001:1x2^0+0x2^1+0x2^2+1x2^3+1x2^4+0x2^5+0x2^6+1x2^7=153
2、原码,反码,补码:
如:
7的原码:00000111
7的反码(取反):11111000
7的补码(取反+1):11111001
3、负数用补码表示
十进制负数转二进制:先求对应正数(原码),然后符号位(首位)定为1,其余位取反+1
二进制负数转十进制:符号位不变,其余位取反+1,得到原码
4、为什么负数用补码表示?
(1)减法可以当做加法来计算(cpu只有加法器)
(2)0的表述实现统一
5、二进制逻辑运算
&与:遇0则0 1&1=1,1&0=0,0&1=0,0&0=0
|或:遇1则1 1&1=1,1&0=1,0&1=1,0&0=0
~取反:1-0 0-1 1变0 0变1
^异或:不进位加法 相同为0,相异为1 1^1=0,1^0=1,0^1=1,0^0=0
>>右移:右边一位消掉,左边补符号位 11001001->11100100
<<左移:左边一位消掉,右边补0 01001001->10010010
>>>无符号右移:右边一位消掉,左边补0 11001001->01100100
小结:正整数>>相当于除以2,<<相当于乘以2
最快的运算2的3次方:2<<2(即:2左移2位)00000010 -> 0000001000
a=3,b=4,交换a和b的值:a=a^b,b=a^b,a=a^b