常用的机器数有原码,反码和补码。通常,机器数是按照字节的倍数存放的,如8位和16位。
在原码的表示法中,机器数的最高位(第一个数)表示符号,0表示正数,1表示负数;机器数的其余各位表示有效数值,即带符号数的二进制的绝对值,不够8位补0。例如,在8位字长时,+43(均为十进制)的原码为0 0101011,-43的原码为1 0101011;在16位字长时,+43的原码为0 000000000 101011。-43的原码为1 000000000 101011。
在反码的表示法中,对于正数,其反码和原码同形;对于负数,则将其原码的符号位保持不变,而将其他位按位取反(即将0换为1,1换为0)在8位字长时+43的反码为00101011,-43的反码为11010100(由其原码1 0101011变换得到)在16位字长时,+43的反码为0 000000000 101011。-43的反码为1 111111111 010100(由其原码1 000000000 101011变换得来 )。
在补码表示法中,对于正数,其补码和原码同形;对于负数,将该数的反码加1,符号为填1。在8位字长时,43的补码为00101011,-43的补码11010101,(由它的反码11010100变换得到);在16位字长时,43的补码为0 000000000 101011,-43的补码为1 111111111 010101(由它的反码1 111111111 010100变换得到)。
只用来个人学习之用,若有错误,欢迎指正