快速简单地求负数的补码和求补码代表的负数

快速简单地求负数的补码和求补码代表的负数


特点是:快速简单实用,不用教科书的取反加一之类的麻烦方法。

//1 这是我认为必要的基本知识

补码,是整数数字数据在计算机内部的存储格式。

整数分为正数,0,和负数。

1位二进制数字可以表示2个不同的状态,

2位二进制数字可以表示4个不同的状态,

3位二进制数字可以表示8个不同的状态,

(此处省略4行字,自己想吧。)

8位二进制数字可以表示256个不同的状态。

8位二进制数字也叫一个字节。

一个字节表示的整数范围是:

-128 -127 -126 .... -1      //  共128个负数,

 0,                   //  0不分正负,只有一个

和 1 2 3 ...到 127        // 共 127个正数。

也就是总共256个数字。

// 2 以上是基本知识,下面才是重点。

1111  1111 

这显然是负数的补码,因为最高位是1。最高位也叫做符号位。

为什么最高位是1就是负数的补码呢?这个大有学问。此处省略一万字。

是不是最高位是0就是正数呢?这个不一定。骑白马的不一定都是王子,唐僧有时候也骑白马。唯一的例外就是: 数字的最高位也是0.

这个补码代表的负数是多少呢? // 这个才是重点。。

只要两步,就可以解决这个问题。

第一步:把这个补码当作无符号数来读取。得到结果是255

第二步:把第一步的结果减去256,得到的差就是所求的负数。 255-256= -1

所以这个补码是-1的补码。

再给一个例子:1000 0000  // 任意一个负数的补码都适用的。

第一步:128

第二步:128-256= -128 

原来这就是 -128 的补码啊!

这里是1个字节,减去的应该是28次方,

如果是2个字节,减去的应该是216次方,

如果是4个字节,减去的应该是232次方。

那么 反过来怎么办呢?如求 -128 的补码。

只要把我说的那两步反过来就好了。

第一步:负数加上 256      -128+256=128

第二步:把上面的结果用二进制表示  1000 0000  这就是负数的补码

  • 9
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值