CSP初赛知识精讲--整数存储

第五节 整数存储

基础知识

 计算机中整数数值的存储并不是简单的将其转为二进制存入内存,因为涉及到正负数、减法运算等问题,所以科学家们设计了一套整数的存储规则–三码。

原码
 整数存储的时候,用最高位表示符号(0为正数,1为负数),后面几位存储二进制数值,如:

正数二进制负数二进制
00000-01000
10001-11001
20010-21010

 我们会发现一个问题,我们计算-1+1的结果时,得到的是1001+0001=1010,结果是-2。所以就有了反码。
反码
 负数的二进制使用反码:符号位不变,其他相反。

正数二进制负数二进制
00000-01111
10001-11110
20010-21101

 现在-1+1的结果是0001+1110=1111,等于-0。但是,0通常被认为是不具有正负之分的,所以又有了补码。

补码
 负数的补码是用反码+1。

正数二进制负数二进制
00000-00000
10001-11111
20010-21110

 现在我们的加法运算就完美了,0也没有分正负。

总结

  1. 正数的原码、反码、补码都死它本身。
  2. 负数的反码为原码(除符号位)取反,补码为反码加一
  3. 计算机内存中存储的是补码
  4. 因为存储的是补码,所以存储范围中的负数总比正数多一个(-0的原码被用来表示最小的负数)。

赛题训练

  1. 在8为二进制补码中,10101011表示的数是十进制下的( )。
    A.43 B.-85 C.-43 D.-84
  2. 在字长为16位的系统环境下,一个16位带符号整数的二进制补码位1111111111101101。其对应的十进制整数应该是( )。
    A.19 B.-19 C.18 D.-18
  • 9
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值