存储有符号整数

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

简单的说就是0,正0=》00,负0=》10。但是没有必要用2中表示0所以

10000000 =》-128

原则:

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

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

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

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

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

 

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

[0,  2^n-1]

猜你喜欢

转载自www.cnblogs.com/zhangzs000/p/10339211.html