目录
1. 操作符的分类
2. 原码、反码、补码
3. 移位操作符
3.1 左移操作符
3.2 右移操作符
4. 位操作符:&、|、^、~
5. 单目操作符
6. 逗号表达式
最近准备期末考试,好久不见啦,现在回归——
正文开始——
1. 操作符的分类
- 算术操作符 :+、-、*、/、%
- 移位操作符 :<< 、>>
- 位操作符 : & 、 | 、 ^
- 赋值操作符 : = 、+=、-=、*=、/=、%=、<<=、>>==、&=、!=、^=
- 单目操作符 :!、++、--、&、*、+、-、~、sizeof、(类型)
- 关系操作符 : >、>=、<、<=、==、!=
- 逻辑操作符 : &&、||
- 条件操作符 : ? :
- 逗号操作符 : ,
- 下表引用 : [ ]
- 函数调用:()
- 结构成员访问:. 、->
2. 原码、反码、补码
【重点】
整数的2进制表示方法有三种:原码、反码、补码。
有符号整数的三种表示方法均有符号位和数值位两部分,2进制序列中,最高位的1位是被当做为符号位,剩余的都是数值位。
符号位都是用0表示 “正”,1表示 “负”。
正整数的原、反、补码都相同。
负整数的三种表示方法各不相同。
原码 :直接将数值按照正负数的形式翻译成二进制得到的就是原码。
反码 :将原码的符号位不变,其它位依次按位取反就可以得到反码。
补码 :反码+1得到补码。
补码——>原码 :取反,+1。
对于整形来说,数据是以 补码 的形式存放在内存中的。
why?
在计算机系统中,数值一律用补码来表示和存储。因为,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理(CPU只有加法器)此外,补码和原码相互转换,其运算过程是相同的,不需要额外的硬件电路。
3. 移位操作符
<< 左移操作符
>> 右移操作符
【注】移位操作符的操作数只能是整数。
3.1 左移操作符
移动规则:左边抛弃,右边补0(移动的是存储在内存中的二进制位)
3.2 右移操作符
移动规则:右移运算分两种
- 逻辑右移:左边用0填充,右边丢弃
- 算术右移:左边用原该值的符号位填充,右边丢弃
【注】对于移位操作符,不要移动负数位,这个是标准的未定义的。
例如:
1 int num = 0;
2 num >> -1;
4. 位操作符:& 、| 、^ 、~
& 按位与
| 按位或
^ 按位异或
~ 按位取反
【注】它们的操作数必须是整数。
练习1:不能创建临时变量(第三个变量),实现两个整数的交换。
5. 单目操作符
单目操作符见下
!、++ 、-- 、& 、* 、+ 、- 、~ 、sizeof 、(类型)
6. 逗号表达式
1 exp1,exp2,exp3,...expN
逗号表达式,就是用逗号隔开的多个表达式。
逗号表达式,从左向右依次执行。表达式的结果是最后一个表达式的结果。
代码1
1 int a=1;
2 int b=2;
3 int c=(a>b,a=a+b,a,b=a+1); //求 c 值
代码2
1 if(a=b+1,c=a/2,d>0)
代码3
a = get_val();
count_val(a);
while(a>0)
{
//...
a = get_val();
count_val(a);
}
用逗号表达式改写如下
while(a = get_val(),count_val(a),a>0)
{
//...
}
完——
———————————————————纪念——————————————————
那个夏天,结束时,你会为了什么...而...落泪...
记念_雷雨心_高音质在线试听_记念歌词|歌曲下载_酷狗音乐酷狗音乐为您提供由雷雨心演唱的高清音质无损记念mp3在线听,听记念,只来酷狗音乐!https://t4.kugou.com/song.html?id=9IqAD2cCOV2
再见——