1.数据分为有符号数和无符号数,无符号数都为正数,由十进制直接转换到二进制即可。而无符号数以首位地址来表示正负,正数的首位地址为0,其源码是由十进制数转换到的二进制数字,负数的首位地址为1,其源码后面的位也为10进制数转换过去的二进制数字。 但是计算内为了储存及运算方便,加入了反码和补码的定义,正数的反码和补码与源码一致,而负数的反码为除了首地址以外,所有的位都取反,因此得名反码,而补码是在反码的基础上,再补上一个1。 2. 因此,源码是为了便于我们自己观看和计算,而计算机内为了运算及存储的方便,存储的都是补码,反码是两者转换的中间过程。 3. 如00010010,最高位是0,所以不管其是有符号数还是无符号数,均为正数,后面7位看1的位置,第5位和第2位为1,因此为2^4+2^1=18. 如10010010(源码),如果是无符号数,那么为2^7+2^4+2^1=146;如果为有符号数,最高位为1,因此为负数,-(2^4+2^1)= -18. 源码10010010 反码11101101 在计算机储存的补码11101110。参考资料: 数字逻辑电路
1.补码(1)正数的补码 与原码相同。 【例1】+9的补码是00001001。(备注:这个+9的补码说的是用8位的2进制来表示补码的,补码表示方式很多,还有16位2进制补码表示形式,以及32位2进制补码表示形式等。)(2)负数的补码 符号位为1,其余位为该数绝对值的原码按位取反;然后整个数加1。 同一个数字在不同的补码表示形式里头,是不同的。比方说-15的补码,在8位2进制里头是11110001,然而在16位2进制补码表示的情况下,就成了1111111111110001。在这篇补码概述里头涉及的补码转换默认了把一个数转换成8位2进制的补码形式,每一种补码表示形式都只能表示有限的数字。 原码原码(true form)是一种计算机中对数字的二进制定点表示方法。原码表示法在数值前面 原码增加了一位符号位(即最高位为符号位),该位为0表示正数或者0(当为0时第一位不能为1,因为如果把10000000也当成0会造成和-128原码冲突),该位为1表示负数,其余位表示数值的大小。反码所谓原码就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。 反码表示法规定:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。 补码表示法规定:正数的补码与其原码相同;负数的补码是在其反码的末位加1。2. (1)、在计算机系统中,数值一律用补码来表示(存储)。 主要原因:使用补码,可以将符号位和其它位统一处理;同时,减法也可按加法来处理。另外,两个用补 码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃。 (2)、补码与原码的转换过程几乎是相同的 |
|