在大一时候,老师讲解了一些有关原码、反码、补码的相关知识,但是由于一些原因忘记了一些,现在通过一些资料,了解到有关的知识。
首先原码、补码、反码是计算机用于储存数字的一些编码方式,在计算机中数字都是以二进制来进行储存的,所以才有了原码、反码、补码。每个数字都是八位二进制。例如7在计算机中则是00000111.
原码、反码、补码对于正数和负数有不同的表达形式。每个数字的二进式的最高位是符号位,用0来代表整数,用1来代表负数。例如 :
+7 原码: 00000111
-7 原码: 10000111
正数的反码和原码一样,负数的反码是将数值部分按位取反。例如:
+7 反码: 00000111
-7 反码: 11111000
正数的补码和原码一样,负数的补码是在反码的基础上加1。例如:
+7 补码: 00000111
-7 补码: 11111001
对于正数来说原码,反码,补码的形势是一样的,对于负数来说,原码是在正数的原码基础上将最高位的符号位改成1,反码是在原码的基础上将数值部分按位取反,补码则是在反码的基础上加1.
对于浮点数来说,计算机储存是会分成两部分,一个是整数部分,另一个是小数部分,来进行而二进制的分别储存。
用过一些测试会发现一些浮点数的相加减会出现计算精度不足的问题。对此我查找资料发现在进行浮点数相加时,浮点数的小数部分会出现对于二进制可能会出现无限循环的情况,但是计算机不允许出现无限循环的情况,所以会进行截取,而对于截取之后的数字进行运算会出现结果不精确等情况。对此,我上网进行查询发现对于浮点数的运算,要达到精确的程度,可以先将浮点数乘以十的倍数(具体看小数点后几位)进行放大,对放大之后的数在进行操作,得到相应的结果之后再与之前的倍数进行想出来进行缩小操作,对此达到解决浮点数计算精度不足的问题。