C语言中的int类型

来源:互联网 发布:最优化理论视频 编辑:程序博客网 时间:2024/05/19 17:47

1、在计算机中,一切都是二进制(0和1)。一个字节等于8个比特。也就是8个0或1位。
1Byte = 8bit

2、原码、反码、补码:
–正数的补码和反码是其本身。
–负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1)
–负数的反码是在其原码的基础上, 符号位不变,其余各个位取反。
也就是:
[+1] = [00000001]原 = [00000001]反 = [00000001]补
[-1] = [10000001]原 = [11111110]反 = [11111111]补

3、字长:
这里写图片描述

在计算机中,cpu中寄存器与内存中间传输数据的时候每一次传输的数据是多少个比特就是一个字长(通常说这个cpu的寄存器是多少宽)。也就是说cpu从内存中每次取出一个字节的数据(其实就是一个int),当然这个会根据cpu编译器变化,比如64bit。
char 1个字节
int 4个字节(取决于cpu编译器,通常的意义就是1个“字”)

所以会有(c语言中char和int都是整数类型):
char m = 255;
int n = 255;

printf(“%d”, m);
printf(“%d”, n);

输出结果:
-1 //11111111
255 //00000000 00000000 00000000 11111111

4、整数越界:
这里写图片描述

所以会有:
char m = 255;
int n = 255;
unsigned a = 255;
char b = 127;
b = b + 1;
char c = 255;
c = c + 1;

printf(“%d”, m);
printf(“%d”, n);
printf(“%d”, a);
printf(“%d”, b);
printf(“%d”, c);

输出结果:
-1
255
255
-128
0