开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第12天,点击查看活动详情
整数
char:1字节(8比特)
short:2字节
int:取决于编译器(CPU),通常的意义是“一个字“(计算机字长)
long:取决于编译器(CPU),通常的意义是”一个字“
long long:8字节。
计算机字长:
字长是指寄存器的宽,同时也是总线的宽。(寄存器一次可以处理的数据、总线一次可以传输的数据),在C语言中体现为int的大小。总的来说,int就是用来表达寄存器的。
整数的内部表达
计算机内部一切都是二进制;
正数和零都用正常二进制表达,那么负数怎么表达?
二进制负数
一个字节可以表示的数:00000000-11111111(0-255)
三种表示负数的方案:
1.仿照十进制,有一个特殊的符号表示负数;
2.取中间的数为0,例10000000为0,比它小的是负数,比它大的是正数;(1,2过于复杂)
3.补码。
补码:
考虑-1,我们希望-1+1=0。如何能做到?
0->00000000
1->00000001
11111111 + 00000001 ->100000000
因为0-1=-1,所以,-1=(1)00000000-00000001->11111111
11111111被当作纯二进制看待时,是255,被当作补码看待时是-1。
同理,对于-a,其补码就是0-a,实际是(2^n)-a,n是这种类型的位数
补码的意义就是拿补码和原码可以加出一个溢出的”零“。