目录
一、操作符详解
(1)算术操作符
取余/取模:
1)使用“/”,如果想打印小数,那么两个数当中至少有一个是浮点数。
2)浮点数默认是双精度。
3)在数后面+f,可以将数变成单精度。
4)取模的两个数要是整数。
(2)移位
1)<<是指把二进制位向左移动一位,举例:int a=2; int b= a<<1;结果:4。
此时,最左边的0丢失,在最右边补0。
2)>>是指把二进制位向右移动一位,举例:int a=10; int b= a>>1;结果:5。
算术右移:此时,最右边的0丢失,在最左边补原符号位0。
逻辑右移:此时,最右边的0丢失,在最左边补0。
3)补充:
整数的二进制的表示形式:
原码:原二进制序列
反码:符号位不变,其他位按位取反
补码:反码+1在内存中,数据存放的是补码。
注意:正整数的原码、反码、补码不变;负整数的原码、反码、补码按上诉变化。
举例:-1,二进制(32位):
原码:10000000 00000000 00000000 00000001
反码:11111111 11111111 1111111 11111110
补码:11111111 11111111 11111111 11111111
此时,如果向右移1位:算术运算:-1;逻辑右移:1。
(3)位(两个数必须是整数)
1)&是指将每一位二进制位相与,举例:int a=3; int b=5; int c= a & b;结果:1。
3的二进制:00000000 00000000 00000000 00000011
5的二进制:00000000 00000000 00000000 00000101
3&5的二进制:00000000 00000000 00000000 00000001
2)|是指将每一位二进制位相或,举例:int a=3; int b=5; int c= a & b;结果:7。
3的二进制:00000000 00000000 00000000 00000011
5的二进制:00000000 00000000 00000000 00000101
3|5的二进制:00000000 00000000 00000000 00000111
3)^是指将每一位二进制位相异或(异或:相同取0,相异取1),举例:int a=3; int b=5; int c= a & b;结果:6。
3的二进制:00000000 00000000 00000000 00000011
5的二进制:00000000 00000000 00000000 00000101
3^5的二进制:00000000 00000000 00000000 00000110
4)一个面试题:不使用第三个变量,交换3和5的值。
有变量:
int main()
{
int a = 3;
int b = 5;
int c = 0;
c = a;
a =