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

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

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

10000000 =》-128it

专业的话,先说计算机系统是用补码表示,而后用补码的优势(3个),若是用twos complement(二位补码法,经过一个公式计算出来)表示的话10 就是表示-2class

原则:硬件

 一、0表示正,1表示负数;二进制

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

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

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

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

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

用补码表示的3个优势:

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

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

[0,  2^n-1]

相关文章
相关标签/搜索