1.整数原码、反码、补码
为什么会有原码、反码、补码相关概念:
如果按照之前说学,第一位表示正负数,后面表示数字可见如下图情况,两者相加得到的0不相同,出现歧义。
用0减去12得出的-12,得到-12为 1111 0100 (为补码)。相加得1 0000 0000,溢出丢弃1,得到0为0000 0000:
数值表示:
正数:直接是原码;
负数:补码;
如何得取补码:其绝对值取反再加一
例题(假设是一个字节):
127:0111 1111
-13:0000 1101(取绝对值13)----取反---->1111 0010----加一----->1111 0011
-1:0000 0001—>1111 1110—>1111 1111(-1为全1)
-128:1000 0000—>0111 1111—>1000 0000(注意区别与127)
二进制(假定一个字节)–>十进制:先看符号位,再算数。
符号位是0,为正数,直接算值。
符号位是1,为负数,先将其取反,再加一,就是其绝对值。
0000 1010----->10
1111 0101------>- 0000 1010 +1-----> - 0000 1011 ---->-11
2.小数的存放
一般表示小数都用“double”类型,因为float 类有点小。
正常使用系统会警告。
避免警告方法:
float a = (float) 12.3;//强转
float c = 12.3f;//f:表示用float 类型表示12.3



