由于一直忘记字节和位的换算。。所以记录一下

参考自 c++ primer plus

计算机内存由一些叫做位的单元组成,不同数据类型通过不同的位数来存储值。

c++11 数据类型 字节与位 新的初始化方式 上溢和下溢

 

字节(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

 

整数上溢和下溢

c++11 数据类型 字节与位 新的初始化方式 上溢和下溢

如图 

有符号类型 

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

 

c++11 数据类型 字节与位 新的初始化方式 上溢和下溢

相关文章:

  • 2021-07-06
  • 2021-07-02
  • 2021-05-24
  • 2022-12-23
  • 2022-12-23
  • 2021-05-30
  • 2021-06-19
  • 2021-10-18
猜你喜欢
  • 2022-01-08
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-09-25
  • 2021-06-10
  • 2022-12-23
相关资源
相似解决方案