- 字节是计算机中数据处理的基本单位。计算机中以字节为单位存储和解释信息,规定一个字节由八个二进制位构成,即1个字节等于8个比特(1Byte=8bit)。八位二进制数最小为00000000,最大为11111111;
1位=1比特
1字=2字节
1字节=8位(8比特)
1字=16位
1字(word)= 2字节(byte)
1字节(byte) = 8位(bit)
①例如
十进制8 二进制是1000
整型字节是4,有32位(32比特)
0000 0000 0000 0000 0000 0000 0000 1000
从右往左写 前面不够的补零
②整型变量在内存中的储存是补码: 对于正数来说,,原码 反码 补码三者都一样。
负数: 反码:符号位不变,原码其余按位取反;
补码:反码+1
例如:(负数的符号位是1)
-1: 原码:1000 0000 0000 0000 0000 0000 0000 0001
反码:1111 1111 1111 1111 1111 1111 1111 1110
补码:1111 1111 1111 1111 1111 1111 1111 1111
(这里符号位是第一位,也就是1,二进制遵循逢二进一,则1110加一则变成1111)
另一种情况:
反码:1111 1111 1111 1111 1111 1111 1111 0111
补码:1111 1111 1111 1111 1111 1111 1111 1000
(此时,因为二进制中没有2,所以当0111加1的时候,
最后一位,倒数第二位,倒数第三位都要进一位,
则第一位变成1,其他位变成0,结果为1000
(0的原码按位取反变成-1的补码)
#include <stdio.h>
int main()
{
int a = 0;
printf("%d", ~a);
}
0000000000000000000000000000000(0的原码按位取反得反码)
1111111111111111111111111111111(0的反码也是-1的补码)
虽然整型变量在内存中的储存是补码,但是在计算机中是以原码的形式呈现出来的,所以要对补码-1,首位是个1则是个负数,然后变成反码,最后对反码按位取反得到原码。