C语言数据类型
数据类型
计算机数据存储
**原码:**原码表示法在数值前面前面有一位符号位(即最高位为符号位),正数该位为0,负数该位为1(0有两种表示:+0和-0),其余位表示数值的大小。
**反码:**正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外
**补码:**计算机用反码计算时存在-0问题,所以诞生了补码
补码计算:正数和+0的补码是其原码;负数则先计算其反码,然后反码加上1,得到补码;补码减掉1,得到反码,再将反码取反,得到原码。
8位二进制取值范围是(-2^7)~(2^7-1),即-128~127。
由于补码=10000000具有特殊性,计算机在编写底层算法时,将其规定为该取值范围中的最小数-128,其值与(-1)+(-127)的计算结果正好符合。
8位二进制补码1000 0000没有对应的反码和原码,其他位数的二进制补码与此类似。
