1.原码、反码、补码
首先介绍一下计算机中怎么储存的
原码
原码就是第一位为符号位,后面放的是数字绝对值的二进制。
1的原码为 00000000 00000000 00000000 00000001
-1的原码为 10000000 00000000 00000000 00000001
反码
正数的反码是它本身,负数的反码是在原码的基础上符号位不变,其他位按位取反。
1的反码为 00000000 00000000 00000000 00000001
-1的反码为 111111111 111111111 111111111 111111110
补码
正数的补码是它本身,负数的补码是在反码的基础上+1
1的补码为 00000000 00000000 00000000 00000001
-1的补码为 111111111 111111111 111111111 111111111
在计算机中,存储和运算用的都是补码,原因是cpu只有加法器,想要执行减法操作时,只需要加上这个数的相反数即可。
1-1可以看成1+(-1)
1的补码为 00000000 00000000 00000000 00000001
-1的补码为 111111111 111111111 111111111 111111111
相加后为 1 00000000 00000000 00000000 00000000
前面的1舍去,最后的结果为0。
2.大端模式和小端模式
在计算机系统中,我们是以字节为单位访问内存空间的,每一个地址对应着一个字节。所以除了char类型的数据,其他类型的数据在内存中都有着存储顺序的问题。
大端模式和小端模式的区别
在大端模式下,高位字节放在内存的低地址处,低位字节放在内存的高地址处。在小端模式下,高位字节放在内存的高地址处,低位字节放在内存的低地址处。
下面是0x12345678以int类型在内存方式(假设地址从0x00000000开始)
0x00000001 | 0x00000002 | 0x00000003 | 0x00000004 | |
大端模式 | 12 | 34 | 56 | 78 |
小端模式 | 78 | 56 | 34 | 12 |