原码、反码、补码

明确一点:

计算机内部存储的是补码,参与运算的也是补码。。。

如果没有特别声明为无符号的数(如逻辑数据或非数值数据(如ASCII码)),计算机内部一般存储的都是有符号数,但是对于计算机而言是无符号的,运算过程中不会考虑正负。

补码就是为了计算机运算过程中不用考虑正负(计算机而言,用无符号数模拟了有符号数的运算),节约电路设计成本等。

-------------------------------------------------------------------------------------------------------------------------------------------

1 原码

一个数字的二进制形式,有符号,正数最高位为0,负数为1,所以原码数值范围为-(2n-1-1) ~ 2n-1-1。

如+1原码00000001,-1原码10000001(8位为例,下同)

区分+0和-0,+0原码00000000,-0原码10000000

2 反码

二进制1取反是0,0取反是1

正数:原码=反码

负数:反码=原码的符号位不变,其余各位取反

如+1反码00000001,-1反码11111110

区分+0和-0,+0反码00000000,-0反码11111111

3 补码

正数:原码=反码=补码

负数:补码=原码的符号位不变,其余各位取反,再+1

如+1补码00000001,-1补码11111111([1000 0001]原->[1111 1110]反->[1111 1111]补)

不再区分+0和-0,0补码为00000000

-0的补码本来是10000000,现在用来表示-128,这样补码比原码和反码能多表示一位最低位,-2n-1~ 2n-1-1

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值