正数负数和0的原码反码补码、左移操作符、右移操作符、位操作符、单目操作符、赋值操作符、while(~scanf(“%d”,&n))终止循环的原因、逻辑操作符、条件操作符、逗号操作符、整型提升、算术转换

学习目标:

各种各样的操作符


学习内容:

遗忘内容:
(1)想要用除法算出小数,需要把被除数和除数写成小数形式。例如:float a=3.0/2.0;
(2)1字节=8位.
64位编译器中各个变量的大小
char :1个字节
char*(即指针变量): 8个字节
short int : 2个字节
int: 4个字节
unsigned int : 4个字节
float: 4个字节
double: 8个字节
long: 8个字节
long long: 8个字节
unsigned long: 8个字节


原码反码补码:
正整数的原码、反码、补码是相同的。负整数的原码、反码、补码需要计算。
例如:因为整形是4字节=32比特,所以5的原码(反码、补码都)是00000000000000000000000000000101,其中第一位的0表示正(同理第一位如果是1,就表示负)。
在这里插入图片描述
在这里插入图片描述
整数在内存中储存的是补码的二进制,也就是说用移位操作符是在补码上进行操作。
打印的是原码。
在这里插入图片描述
-5的补码
在这里插入图片描述
左移操作符:向左移几位就在右边补几个0。
在这里插入图片描述
先一步步运算得到-5的补码,然后在补码上进行操作,最后把补码变为原码打印
在这里插入图片描述
在这里插入图片描述
右移操作符:
在这里插入图片描述

在这里插入图片描述

位操作符:
在这里插入图片描述
位操作符都是在二进制数上进行操作。
按位与:同1为1,有0为0.
按位或:同0为0,有1为1.
按位异或:相同为0,相异为1。相同的数异或为0;0与任意数异或为本身。
        例:a^ a=0;0^a=a。

赋值操作符:“=” 就是普通的赋值
复合赋值符:
在这里插入图片描述单目操作符:
在这里插入图片描述
!0表示真
在这里插入图片描述
!非零数表示假
在这里插入图片描述

sizeof()的括号内如果有表达式,虽然可以运行,但是表达式不生效
例:在这里插入图片描述
~:按位取反。在这里插入图片描述
这里解释一下0的原码反码补码
0的原码反码和补码:0分为+0和-0。+0就当作整数,三码相等;-0的原码是全零,反码是全1,补码是全1加1,第33位是1,剩下32位都是0,但是溢出了,所以只取那32位的0。

提问:为什么while(~scanf(“%d”,&n))可以终止循环?
答:因为scanf正常的返回值是输入符号的个数,如果输入失败会返回EOF,EOF本质上是数字-1,-1的补码是111…111(32个),全是1按位取反就得到000…000(32个),就是数字0,所以循环终止。

++a;a++;–a;a–的区别和意义:
在这里插入图片描述
逻辑操作符&&和||:
最后运算的结果为a=1,b=2,c=3,d=4
在这里插入图片描述
最后运算的结果为a=2,b=2,c=3,d=4

在这里插入图片描述
条件操作符
在这里插入图片描述
逗号操作符:
用逗号隔开多个表达式,从左到右依次执行各个表达式
在这里插入图片描述
整型提升:不足32比特位的变量补充至32位,补充的数字与原来的最高位相同。
例如:
在这里插入图片描述
算术转换:为了完成操作,把变量类型转化成高等级类型(比如无符号变量编程有符号变量)。大概是这个意思忘了看初级c13视频。


学习时间:

提示:这里可以添加计划学习的时间

例如:

  • 周一至周五晚上 7 点—晚上9点
  • 周六上午 9 点-上午 11 点
  • 周日下午 3 点-下午 6 点

学习产出:

提示:这里统计学习计划的总量

例如:

  • 技术笔记 2 遍
  • 优快云 技术博客 3 篇
  • 习的 vlog 视频 1 个
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值