假如机器字长为8位
首先把-21转换为二进制(负数的最高位也就是符号位为1,正数为0)
原码:1
0010101
反码:1
1101010(符号位不变其他位按位取反得到)
补码:1
1101011(在反码的基础上加1得到)
扩展资料:
原码、反码和补码是计算机中对数字二进制的三种表示方法。
1、原码
原码(true form)是一种计算机中对数字的二进制定点表示方法。原码表示法在数值前面增加了一位符号位(即最高位为符号位):正数该位为0,负数该位为1(0有两种表示:+0和-0),其余位表示数值的大小。
例如:用8位二进制表示一个数,+11的原码为00001011,-11的原码就是10001011。
2、反码
反码是数值存储的一种,多应用于系统环境设置,如linux平台的目录和文件的默认权限的设置umask,就是使用反码原理。反码的表示方法是:正数的反码与其原码相同负数的反码是对正数逐位取反,符号位保持为1。
例如:
[+7]反= 0 0000111 B
[-7]反= 1 1111000 B。
3、补码
正数:正数的补码和原码相同。负数:负数的补码则是符号位为“1”。并且,这个“1”既是符号位,也是数值位。数值部分按位取反后再在末位(最低位)加1。也就是“反码+1”。
例如:
[+7]补= 0 0000111 B
[-7]补= 1 1111001 B。