首先介绍计算机的二进制码
二进制常用的有原码,反码和补码,他们都是由最左边的一个符号位和右边的数值位构成。在计算机中为了更低成本的计算,数据都是用补码来存储和运算的。
原码
最高位表示符号位(0代表正数,1代表负数)。剩下的位数,是这个数的绝对值的二进制。
比如 一个int变量大小为4字节,在32位的编译器中的二进制表示就是
00000000 00000000 00000000 00000000
那么10的原码就是
00000000 00000000 00000000 00001010
−10的原码就是
10000000 00000000 00000000 00001010
反码
正数的反码和其原码是一样的
负数的反码就是在其原码的基础上 符号位不变 其他位取反。
10的反码就是
00000000 00000000 00000000 00001010 和原码一样
−10的反码就是
11111111 11111111 11111111 11110101
补码
正数的补码就是其原码
负数的补码就是在其反码的基础上+1
10的补码就是
00000000 00000000 00000000 00001010
−10的补码就是
11111111 11111111 11111111 11111011
总结一下
计算机系统中,数值一律用补码来表示:因为补码可以使符号位和数值位统一处理,同时可以使减法按照加法来处理。
二进制编码:数值编码分为原码,反码