由于一直忘记字节和位的换算。。所以记录一下
参考自 c++ primer plus
计算机内存由一些叫做位的单元组成,不同数据类型通过不同的位数来存储值。
字节(byte)通常指的是8位的内存单元,1Byte = 8 bit
举个栗子:1KB = 2^10 Byte = 1024 Byte = 1024 字节 = 1024 * 8 bit = 8192 位
总所周知计算机的世界不是0就是1,一个比特位可以存储0或者1,
所以8位的内存块可以设置256个不同的组合 2^8 = 256
所以 8位存储的带负数(符号)数值范围为( -128 ~ 127) ,若不带负数(无符号) 则为 (0~256)。
许多初学c++的人都存在一个误区,认为int一定是32位
这是错误的,当前非常多的操作系统使用的是最小长度,即short为16位,long为32位,但int的宽度可以是16、24、32位;甚至可以是64位。要知道系统中整数的最小长度 用sizeof() 即可 sizeof函数返回类型或者变量的长度,单位为字节。
、
船新的初始化方式:
int hamburger = 123;
int hamburger(123);
int hamburger = {123};
int hamburger {123};
以上4种方式都可以初始化
另外: int hamburger {}; // 如果不填数值默认为0
整数上溢和下溢
如图
有符号类型
short s1 = 32767;
当 s1 += 1 => s1的结果为 -32768;
short s1 = -32768;
当 s1 += 1 => s1的结果为 32767;
无符号类型
unsigned short s1 = 65535; s1 += 1 => s1 = 0
unsigned short s1 = 0; s1 -= 1 => s1 = 65535