操作符详解

原码反码补码

1:正整数的原码、反码、补码都是相同的。

2:负整数的原码、反码、补码需要计算。

负数的反码:原码的符号位不变,其他位按位取反得到的就是反码

负数的补码:反码+1就是 补码

一个整形四个字节=32个bit位

首位是符号位,符号位为1代表负数,符号位为0代表正数。

整数在内存中存储的是补码,计算的时候也是补码。

移位操作符

右移:

算数右移:右边丢弃,左边补原来的符号位(一般都是这)

逻辑右移:右边丢弃,右边直接补0.

C语言没有明确规定是算数还是逻辑右移,一般编译器上采用算数。

int b=a>>1

但是a的地址里的储存没变。b得到a得到之后的结果,但a还是不变。

正数右移一位有类似除二的效果。

左移操作符:

左边丢弃,右边补0.

位操作符:

&按位与(有0为0)

c=a&b:补码的对应二进制位有0为0,两个同时为1就为1.

|按位或(有1为1)

 按二进制位有1为1,两个同时为0则为0.

^按位异或:

补码对应的二进制位相同为0.相异为1.

a^a=0

a^0=a

b=5

a^b^a=5异或是支持交换律的  不会进位,所以不会产生溢出。

a^a^b=5

不创建临时变量来实现整数的交换

a=a+b;

b=a-b;

a=a-b;

杂:

int*pa=&a;取出a的地址

~波浪号操作符

补码的二进制按位取反

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值