重生到大一之操作符疑难点和记忆分享(2)

1.关于移位操作符的补充

左移操作符:左边丢弃,右边补0

0d91bc23020d432288387e5719dbd8b5.jpg

 右移操作符:①:逻辑右移

左边用零填空,右边丢弃

②:算术右移

左边用该值的符号填充,右边丢弃

fea87c36a0354e88b71f972edb4518b6.jpg

 

2.关于位操作符的疑难点和记忆

请以下四位角色出场  ——>  & |  ^  ~

f26f577aa94c4b6386d598daa2105164.jpg

 第一个printf:

-3:100000000000000000000000000000011

 5:000000000000000000000000000000101

这是-3小姐和5先生的原码

在进行计算前,负数要先转化为补码,(正数的补码与原码一致)

-3小姐的补码为:

11111111111111111111111111111101

补码转原码符号位是不变的,也就是第一个数字不变,而且还记得要取反+1,+1很容易被忘记

然后按位与(其实类似于真假的关系,1表示真,0表示假,逻辑就像&&一样,都是真才为真(都是1则是1),有假则都为假(两边有0则为0)

&结果:0000000000000000000000000000101

我们想要知道结果是哪个数字,则要把它转化为原码,但又因为开头那个数字也就是符号位是0,也就正数三个码都相同,所以说我们通过这串数字就可以直接推出数字是什么

第二个printf:

则是按位或 |  ,  规则:只要有1就是1两个同时为0则为0。

我们跳过中间步骤直接得到结果

:111111111111111111111111111111101

注意这里的符号位,也就第一个数字是1

那么我们需要把这串补码转化为原码

:100000000000000000000000000000010

再加1

:100000000000000000000000000000011

这样我们就可以推出数字来

 

第三个printf~记忆

是按位异或,我们可以把它想象成一个穿针游戏

84612fa4f4b840198445fce92a399aad.jpg

1就是针,零就是孔

1碰1为0,1碰0穿过为1,0碰0为0

第四个printf

是按位取反,全部取反,(除了~全部取反,其他的取反,符号号位是终是不变的)

而且需要注意,我们拿来操作的数字,要看他的二进制数,开头是1还是0,是0就不用管是1就需要转换为补码,结果也是一样,如果结果的二进制数开头是1则需要把它转化,

3.关于结构体的疑难点:

结构体更像是一个集合,把你要用的一些类型值变成一个集合,你想用的时候就能用,而不是单一的局限为一个类型

首先结构的声明:

struct a (随意的名字(ー_ー)!!)

member-list;----->成员列表

}

variable-list;------>变量列表

变量列表可以为0,但是成员列表必须有值

比如描述一个学生的值2095231f2194448e9505243aeb1d1449.jpg

 用结构的话,你就会很方便,想调用哪个类型的值就能调用,

关于它的定义的话,有两种方法,但一种是全局变量,一种是局部变量87354972363f40b0b1a94ae9a632bed2.jpg

 

。゚+.ღ(ゝ◡ ⚈ღ)

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值