计算机系统存储有符号整数

1、为什么负数总是比正数多存储一位,eg: 32 位的有符号整数,则其数值范围为 [−2^31,  2^31 − 1]?

用一种不专业,但好理解的方式就是就是0,正0=》00,负0=》10。但是没有必要用2中表示0所以

10000000 =》-128

专业的话,先说计算机系统是用补码表示,然后用补码的优点(3个),如果用twos complement(二位补码法,通过一个公式计算出来)表示的话10 就是表示-2

原则:

 1、0表示正,1表示负数;

 2、计算机为方便减法计算,在表示负数的时候引入补码机制,将减法变成加法统一运算。那如何运算,负数整数部分取反得到反码,反码+1的到补码。

 在计算机系统中,数值一律用补码进行表示和存储。原因在于使用补码可以将符号和数值统一处理,同时加法和减法也可以统一处理。此外,补码与原码相互转换,其运算过程是相同的,不需要额外的硬件电路。

补码:正整数的补码是其二进制表示,与原码相同;负整数的补码,将其原码除符号位外的所有位取反(0变1,1变0,符号位为1不变)后加1

反码:正数的反码与其原码相同;负数的反码是对正数逐位取反,符号位保持为1;

 现实生活的例子,10点加8点=》6点; 10点减去4点=》6点;也就是说 10-4的运算可以转化成10+8;4和8互为补数。对于计算机而言,8位二进制系统的模为2^8。在这样的系统中减法问题也可以化成加法问题,只需把减数用相应的补数表示就可以了。把补数用到计算机对数的处理上,就是补码。

用补码表示的3个优点:

统一加减法,统一正负数,补码和原码转换方式一样无需额外的硬件电路

2、无符号n比特正数表示的范围是多少

[0,  2^n-1]

 

转载于:https://www.cnblogs.com/zhangzs000/p/10339211.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值