计算机都是以二进制0 和1存储得,Java中数据类型强制转换是用的原码,反码,补码,知识得,所以我们在这里介绍一下。
1.原码
就是二进制定点表示法,即最位为符号位,“0” 表示正,“1”表示负,其余位表示数值的大小。
通过一个字节,也就是8个二进制位表示+7和-7
0(符号位) 0000111
1(符号位) 0000111
2.反码
正数的反码与其原码相同;负数的反码是对其原码逐位取反,但是符号位除外。
3.补码
正数的补码与其原码相同;复数的补码是在其反码的末位加1。
4.例如 :
原码: 反码: 补码:
0(符号位) 0000111 (+7) 0(符号位) 0000111 (+7) 0(符号位) 0000111 (+7)
1(符号位) 0000111(-7) 1(符号位) 1111000 (-7) 1(符号位) 1111001 (-7)
5. 按理来说 0(符号位) 0000111 (+7) 和 1(符号位) 0000111(-7) 相加是位0的但是不是的,让我来一起看下
0(符号位) 0000111(+7)(原码)
1(符号位) 0000111(-7)(原码)
1(符号位) 0001110(计算机都是以二进制存储,二进制逢二进一,1+1=2逢二进一就是0了)
0(符号位) 0000111 (+7) (补码)
1(符号位) 1111001 (-7)(补码)
0 (符号位) 0000000(计算机都是以补码计算的,最后前面其实是有1的10 0000000 ,但是我们是八进制前面的1就舍弃了)
未完待续。。。。。。