C语言中关于原码,反码,补码以及左移右移操作符的运算

整数的二进制表示形式有三种:原码,反码,补码
存储到内存中:补码(所以移位也是用补码移!!!)
注:正整数的原码,反码,补码相同
补充:
在这里插入图片描述

正数的原反补码:
在这里插入图片描述

负数的原反补码:
在这里插入图片描述

第一位为符号位:正数是0,负数是1,
根据二进制的算法(…8,4,2,1)可以得出原码为:10000000000000000000000000000001;
反码,可以理解为与原码的1和0反过来(除了第一位符号位),那么反码即为:11111111111111111111111111111110;
而补码就更好理解了,反码+1=补码,所以补码为:11111111111111111111111111111111;

右移操作符:
右移运算分为两种:算术右移,逻辑右移
算术右移:右边丢弃,左边补原符号位(正补0,负补1)
逻辑右移:右边丢弃,左边补0
大多数情况都是使用算术右移
正数的两种右移方式得出的结果都相等
例:
正数情况
在这里插入图片描述
负数情况
在这里插入图片描述
右移后的补码与原来的补码相同所以还是打印出-1;

左移操作符:
左边丢弃,右边补0
正数情况
例:
在这里插入图片描述

过程如下图:
在这里插入图片描述
最后打印出的c结果为10;
负数情况
在这里插入图片描述
最后打印出b的结果为-2(注意原反补码的转换)

注:
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值