首页 理论教育 整型数据表示:有符号和无符号的区别

整型数据表示:有符号和无符号的区别

时间:2023-06-23 理论教育 版权反馈
【摘要】:整型表示是指使用一些比特仅表示数据的整数部分。整型表示法能够大体上分为两种,有符号整数表示和无符号整数(非负数)表示。通常,一个无符号整数能够表示的任意值的范围是0~2n-1,这里n是用比特表示的无符号整形数据的位数宽度。最经常使用的是二进制的补码表示形式。在这种情况下,最高有效比特位再次决定这个数值的符号,用1表示一个负数,但是余下的比特位表示一个无符号数的大小。

整型数据表示:有符号和无符号的区别

整型表示是指使用一些比特仅表示数据的整数部分。也就是说,它不能表示这个数据的任何小数部分。整型表示法能够大体上分为两种,有符号整数表示和无符号整数(非负数)表示。

通常,一个无符号整数能够表示的任意值的范围是0~2n-1,这里n是用比特表示的无符号整形数据的位数宽度。例如,一个8比特的无符号整型数据的值,最小值将是000000002=010。最大的值将会是111111112=25510=28-1。

使用某一种协议,有符号表示法既能够表示正数值,又能够表示负数值。最经常使用的是二进制补码表示形式。在这种表示形式中,数据的最高比特位确定了这个数据的符号,用1表示一个负数。一个正数值是直接根据数值确定,它可以被简单地解释为一个无符号整数。然而,如果一个数据是负数,那么是最容易确定它值的方法是对它求反,然后解析结果的正值作为这个负值的大小。对于二进制的补码取反,仅仅是对对数据取补(翻转这个值的每一个比特位)并且加1。如果加法的进位超出了这个数据的比特位数,那么进位被舍弃[1]。余下的数值像是一个无符号数那样被解释,并且添加上负的符号位。下面的表格说明了6个不同的8比特的二进制补码表示,这里只有第一个数据是正数,余下的都是负数。

尽管这个二进制补码的表示形式也许好像很陌生,与其他的表示方法比较起来,在计算机的算术运算硬件设计方面有很大的优势。通常,一个二进制的补码表示能够表示范围为-2n-1~+2n-1中的任何一个值,在这里n是二进制补码整数用比特表示的数据宽度,例如,一个8比特的二进制补码表示的整数值,最小的值将是100000002=-12810。最大的值将会是011111112=+12710。(www.xing528.com)

另一个表示有符号的二进制整数相对来说常见的方法,是使用符号数值表示法。在这种情况下,最高有效比特位再次决定这个数值的符号,用1表示一个负数,但是余下的比特位表示一个无符号数的大小。这里有一个优点,因为这种表示是关于0值对称的,与二进制补码表示比较起来,二进制补码表示法能够表示一个更多的负值比正值。例如,用一个8比特的符号整数数值,最小的值将是111111112=-12710。最大的值将是011111112=+12710。值000000002和100000002都表示0值。

注意,对于一个整数的表示,每一种可能的比特位组合事实上都是一个有效值———这使得在硬件中不调整这个表示方式对于表示或者检查错误值来说都是不可能的。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈