基本概念:
定点数是小数点确定的数 ,既 整数 或者纯小数(0~1 十进制的小数 并不能完美的转换为二进制的小数 都会存在精度丢失问题)
原码 反码 补码 都是定点数 定点数的最高位都是符号位 理解原码 反码 补码 可以更好的理解计算机是如何进行加减运算的
原码 原码中的0 有两种表示
补码 为了更加方便进行加减运算 所发明的能够加快计算机运算速度 其中+ 0 表示0 -0不表示0 (主要是由于存在+0 和-0 的问题 才有的补码,最开始是使用反码计算减法)
反码 原码与补码的中间品,为了更加方便计算补码 都是正数 补码= 反码 = 原码 负数 反码= 原码除符号位取反 补码 = 反码+1
一般的 负数都是以补码的形式存储在计算机内部的 可以方便进行运算
以 java 为例(都是有符号的 c 中存在专门的修饰词 生命是否有符号) int占4个字节 既 32个bit 最高位为符号位 又因为负数使用补码存储 因此 取值范围 -2^31 ~ 2^31-1
原码 反码 补码 对c c++ go 等语言比较有用(较贴近底层的语言) java等语言 用处不大 语言已经高度封装过了
暂时接触不到 等日后学习c 或 go 可能会有更深入的理解(待补充。。。)