愿所有美好如期而遇
我们的数据在计算机中都是以二进制形式存储的,而数据都有不同类型,但总归都会转换成数值。
原码:将数值转换成二进制。
- 正数首位为0,表示正数
- 负数首位为1,表示负数
反码:
- 正数:同原码
- 负数:在原码的基础上,符号位不变,其他位按位取反
补码:
- 正数:同原码
- 负数:在反码基础上,加1
而且计算机只有加法器,没有减法器,那么如何进行减法呢?也就是一个整数加上一个负数,同时,数值在计算机存储时按照补码存储,不按原码和反码存储,同时,计算时也是按照补码进行计算,因为这样可以将符号位和存储大小的位进行统一处理,而原码就不可以,我们来验证一下:
我们来探讨一下char的大小范围以及其原因:
那么如果一个超过范围的数赋值给char类型的变量会怎么样?我们画个图来理解
如果说129赋值给一个char类型的变量,那么可以这样理解,127+2,也就是在圈里顺时针走两位,也就是-127。