CPP学习之——整型概述(4.7)

一 概述

  • 整型变量有好多种,最基本的是Int,一个字节有8位二进制数,int型数据有4个字节就是4*8为32位二进制数。
  • 整型变量按照大小可以分为长整形和短整型

二 代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include<iostream>
using namespace std;

int main()
{
int a;
short int b; //2
short c; //2
long int d; //4
long e;//4
cout<<"int:"<<sizeof(int)<<endl;
cout<<"short:"<<sizeof(short)<<endl;
cout<<"long:"<<sizeof(long)<<endl;
cout<<"unsigned short:"<<sizeof(unsigned short)<<endl;
return 0;
}

三 代码说明

3.1 基本概念

  • int 是最基本的整型变量,占据4个字节
  • short int 简称short ,占据2个字节(16位)
  • long int简称long,占据4个字节
  • sizeof()的作用是告诉用户括号内的参数所占用的字节数

3.2 延伸

  • long类型的数所占据的内存空间为4个字节
  • 而int型的数占的内存空间在16位系统里是2个字节,在32位系统里是4个字节
  • int类型的长度并不是固定的,它和系统平台有关系(当然现在基本上16位的系统都已经淘汰了)
  • 所以long和int都是4个字节,没有什么区别

四 有符号数与无符号数

4.1 概念

  • 有符号与无符号整型的区别在于有无符号可以表示负整数,而无符号只能表示正整数,同时由于有符号整型的最高位要用于表示符号位,因此取值范围要比无符号小一倍。

4.2 说明

  • 无符号数:unsigned short(16位),最大数1111111111111111(65535),最小值000000000000000(0)

  • 有符号数:short(16位),最高位位符号位,最大数15个1(32767),最小值-32768

  • 负数的补码:

    • 15个1翻转后变为15个0
    • 在翻转后的末尾加1
  • -1的16位二进制表示是16位全部为1

4.3 各种类型的长度以及数值范围

数值类别 长度(bytes) 数值范围
int 4(32bits) -2147483648~2147483647(-2^31~(2^31-1))
short int 2(16bits) -32768~32767(-2^15~(2^15-1))
long int 4(32bits) -2147483648~2147483647
unsigned int 4(32bits) 0~4294967295(0~(2^32-1))
unsigned short int 2(16bits) 0~65535(0~(2^16-1))
unsigned long int 4(32bits) 0~4294967295(0~(2^32-1))
char 1(8bits) -128~127(-2^7~(2^7-1))
float 4(32bits) 1.2e-38~3.4e38
double 864bits) 2.2e-308~1.8e308

五 参考

  • 原码、反码、补码之间的快速转换和简单运算