c语言中关于int的位数问题

前提:一直以来对于位数问题理解实在是模糊,作为一个混迹编程多年的菜鸟实在是羞愧难当!

int 类型:

1.默认是有符号的,无符号类型(unsigned int)

2.编译器在处理的时候根据操作系统的位数决定int的字节数,32位,16位都是4个字节的,64位是8个字节

3.用sizeof(1)可以看出数字1的字节数,1一般默认都是int类型来存储的

4.long的位数也是不确定的,long long 确定是8个字节

5.在C11的标准中追加stdint.h避免了位数的不确定如:int32_t就是指4个字节的,int8_t就是一个字节

位数与字节:

字节也叫Byte,是计算机数据的基本存储单位。

如:C语言中的byte类型占一字节,一字节等于八位

我们来看看一个位能表示多少东西: 最小0 最大1  表示 2的1次方
再看看两个位能表示多少东西: 最小00 最大11 共2的2次方, 能表达四个数
再看看三个位能表示多少东西: 最小000 最大111 共2的3次方,能表达8个数
那八个位能表示多少?
最小:00000000 最大:11111111 这就是8位 也叫一个字节 
如果用数没有正负之分那可以表示 0~255 共256个数字. 也可以叫做 2的8次方,你用计算器算算,2的8次方是不是等于256?
如果数有正负之分那可以表示-128~+127 也是256个数,因为8位里面拿走一个位用来表示正负了,所以只能表示最大127

接下来 : 9位 = 2的九次方 =512个数字
接下来: 10位 = 2的十次方 =1024 个 ..... 以此类推

现在知道答案了吧: 
1 byte = 1字节  = 8bit 可表达 2的八次方个数字
1 short= 2字节  = 16bit 可表达2的十六次方个数字
1 int  = 4字节  = 32bit 可表达2的32次方
1024GB=1TB 
其中:K是千 M是兆 G是吉咖 T是太拉。
在电脑里一个中文字是占两个字节的。



猜你喜欢

转载自blog.csdn.net/adobeid/article/details/44001241