存储用补码

本文详细介绍了计算机中进行减法运算的方式,通过原码、反码和补码的概念来理解二进制下的加法表示减法。在八位二进制下,由于符号位的存在,-128无法用原码或反码表示,但通过补码人为定义为10000000,确保了编码的唯一性。补码的使用扩大了表示范围,使得在八位系统中能够表示-128到127的整数。
摘要由CSDN通过智能技术生成

因为计算机只有加法没有减法,在做减法运算的时候,可以认为是加上一个负数。

原码

符号位:0正1负。转化为二进制数。

1-1=1+(-1)=[00000001]原+[10000001]原=[10000010]原=-2 (符号位也参与运算)与实际不符

反码

正数时,反码=原码;
负数时,将原码各位取反,符号位不变。

1-1=1+(-1)=[00000001]原+[10000001]原=[00000001]反+[11111110]反=[11111111]反=[10000000]原=-0(但是无正负0之说)

补码

正数时,补码=原码;
负数时,将反码加上二进制的1即可,也就是反码在最后一位上加上1就是补码了。

1-1=1+(-1)=[00000001]原+[10000001]原=[00000001]补+[11111111]补=[00000000]补=[00000000]原

关于 -128 的补码问题(byte)

在八位二进制(byte)下,因为有一位是符号位,原码和反码只能表示0到127,-0到-127,所以-128不能用原码或反码表示。

按这种说法,128因为无法用八位二进制下的原码表示,则-128的八位二进制下的补码也是不存在的。

但是,为了在数的表示上消除编码映射的不唯一性,所以通过人为的定义对转换的10000000强制认定为-128。

因此,-128八位二进制下的原码和反码不存在,而八位二进制下的补码为10000000。

127的补码为01111111

所以使用原码或反码表示的范围为[-127, +127], 而使用补码表示的范围为[-128, 127]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值