算术操作符
+ - * / %
•除号两端都是整数,得到的结果也是整数
•除号;两端必须有一个浮点数,得到的结果才能是浮点数
•% 左右两端必须为整数
移位操作符——操作的是二进制位
<< 左移操作符
>> 右移操作符
整数的二进制表示有3种形式:
原码
反码
补码
•正整数的原码,反码,补码是相同的
•负整数的原码,反码,补码是要计算的
•最高位是符号位: 0代表正数
1代表负数
•一个整数是32个比特位
•Int a = 5 的二进制为:00000000000000000000000000000101
•正数的原码,反码,补码都相同
•Int a = -5 的二进制为:
•原码:正数的第一位变成1
•反码:1变0, 0变1(原码的符号位不变,其他位按位取反得到的就是反码)
•补码:最低位变成1(反码+1就是补码)
•整数在内存中储存的是补码的二进制
•左移:左边丢弃,右边补0
右移操作符:
算术右移:右边丢弃,左边补原符号位
逻辑右移:右边丢弃,左边补0
>> 当前编译器,在右移的是采用算术右移
>> 到底是算术右移还是逻辑右移是取决于编译器的
对于移位运算符,不要移动负数位,这个是标准未定义的
例: int num = 10 ;
Num>>-1; //error
位操作符
& //按位与 只要有0就是0,两个是1才是1
&a:取地址a,//单目操作符
| //按位或 只要有1就是1,两个同时是0才是0
^ //按位异或 对应的二进制位:相同为0,相异为1