【计算机原理】求一个机器数的反码
首先,解释一下 反码 的概念:反码是数值存储的一种,简单点说就是在计算机内定点数的表示法之一,除了反码,常用的还有原码,补码,移码等。 暗戳戳地说一下,反码其实是用得很少的~ 但是!反码用处还是挺大的,比如说作为机器数运算的中间数, 虽然用补码更多一些吧 ,再比如说 系统环境设置 ,像linux平台的目录和文件的默认权限的设置umask就是的使用反码原理。 总之,存在即是合理,反码就是这么真实存在的一种编码方式。 其次,套用一下教科书上的东西: 正数的反码是其本身,负数的反码是在其原码的基础上, 符号位不变,其余各个位取反。 老陌在此用自己的理解解释一下,就是说求一个数的反码主要分成两个方向:正数和负数。其中最简单的就是正数了,只要原模原样照搬就可以了;然后是夹在正数和负数中间的0,因为在计算机中0的 原码 和 反码 是分成+0和-0的,所以这个特例还真要分类讨论;最后是负数,整数的做法也就是按位取反,符号位不变,小数的话印象中是有定点小数和浮点小数之分,我记得以前计算浮点小数还要先把小数转换成整数,然后算完了再把小数点向前移动多少位,最后才能求出实际的数值。 综上,在老陌的印象中求反码的难易等级是这样的:正整数(易)--->正小数--->零--->负整数--->负小数(难) 接下来老陌将以8位的二进制机器数为例,其中首位为符号位(0为正,1为负),所以决定真值范围的也是后面的7位