原码,补码和反码
1.原码
在计算机中,除了unsigned的数据类型,二进制数的第一位是用作符号位。正数用0表示,而负数用1表示。因此,32位的int类型的表示范围便是(去掉一位符号位):
[231−1,−231]
而原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值。比如如果是8位二进制:
[+1]原码=00000001
[−1]原码=10000001
2.反码
讲完了原码讲反码,反码的表示方法为:
正数的反码:就是它本身。
负数的反码:除符号位外,通通按位取反。
比如刚才的8位二进制数:
[+1]反码=00000001
[−1]反码=11111110
3.补码
再说到补码的表示方法:
正数的补码:依然是他本身。
负数的补码:在反码的基础上加1。
又比如刚才的8位二进制数:
[+1]补码=00000001
[−1]补码=11111111
补码就是计算机储存数据的方法,因此,对于一个byte类型来说:
127+1=01111111+1=10000000=−128