大家好,我是Nimsolax,今天来学习操作符吧
一,原码,反码,补码
整数的2进制表示方法有三种,即原码、反码和补码。三种表示方法均有符号位和数值位两部分,符号位都是用0表示“正”,用1表示“负”,而数值位最高位的一位是被当做符号位,剩余的都是数值位。
正整数:原码,反码,补码相同。
负整数:原码,反码,补码不同。
具体来讲讲负整数
负整数的反码是原码基础上,符号位不变,其他按位取反;
补码是反码的基础上加1
如 -1 的原码:1000 0000 0000 0001
反码:1111 1111 1111 1111 1110
补码:1111 1111 1111 1111 1111
补码变回原码,可以除符号位外,按位取反加1
注:CPU中只有加法器,在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理。
下面来进行1+(-6)计算
1 :0000 0000 0000 0001
-6:1000 0000 0110(原)
1111 1111 1001(反)
1111 1111 1010(补)
1(原码)和-6(补码)进行相加
得:1111 1111 1011
取反:1000 0000 0100
加1:1000 0000 0101
注:因为算的符号位是1,所以要取反加1得原码,如果符号位是0,就不用了,因为正数原反补码相同。
显然结果是-5
二,移位操作符
1.左移操作符
移位规则:左边抛弃、右边补0
2.右移操作符
移位规则:首先右移运算分两种:
1. 逻辑右移:左边用0填充,右边丢弃
2. 算术右移:左边用原该值的符号位填充,右边丢弃
逻辑右移1位演示
算术
逻辑
注:移位运算符不可移动负数位
三,位操作符
位操作符有四种
&:按位与
| :按位或
^ :按位异或
~:按位取反
注:他们的操作数必须是整数。
1.按位与
有0则为0,同时为1才为1
如
a=2,b=3
a&b
a:0000 0000 0010
b:0000 0000 0011
a&b:0000 0000 0010
2.按位或
有1则为1,同时为0才为0
如
a=2,b=3
a|b
a:0000 0000 0010
b:0000 0000 0011
a^b:0000 0000 0011
3.按位异或
相同为0,不同为1
如
a=2,b=3
a^b
a:0000 0000 0010
b:0000 0000 0011
a^b:0000 0000 0001
4.按位取反
如
a=3
a:0000 0000 0011
~a:1111 1111 1100
四,优先级