[20200216]数据压缩第一次作业

任务:总结归纳计算机编程中的各种数据类型其表示形式和计算方法。重点关注类型转换,数值溢出和移位等操作。

一、基本的内置类型

类型关键字
布尔型bool
整型int
字符型char
浮点型float
双浮点型double
无类型void

C++ 允许在 char、int 和 double 数据类型前放置修饰符。修饰符用于改变基本类型的含义,所以它更能满足各种情境的需求。
下面列出了数据类型修饰符:

  • signed
  • unsigned
  • long
  • short

修饰符 signed、unsigned、long 和 short 可应用于整型,signed 和 unsigned 可应用于字符型,long 可应用于双精度型。

1.整型
类型字节数 范围 存储方式
int4 -2147483648 ~ 2147483647定点有符号二进制补码形式
unsigned int4 0 ~ 4294967295定点有符号二进制补码形式
signed int 4 -2147483648 ~ 2147483647定点有符号二进制补码形式
short int2 -32768 ~ 32767定点有符号二进制补码形式
unsigned short int2 0 ~ 65,535定点有符号二进制补码形式
signed short int2-32768 ~ 32767定点有符号二进制补码形式
long int8 -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807定点有符号二进制补码形式
signed long int 8 -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807定点有符号二进制补码形式
unsigned long int8 0 ~ 18,446,744,073,709,551,615定点有符号二进制补码形式
2.字符型
类型字节数 范围存储方式
char1-128 ~ 127 或 0 ~ 255有符号二进制补码形式
unsigned char1 0 ~ 255有符号二进制补码形式
signed char 1-128 ~ 127有符号二进制补码形式
3.浮点型
类型字节数 范围存储方式
float4精度型占4个字节(32位)内存空间,+/- 3.4e +/- 38 (~7 个数字)浮点形式存储
double8 双精度型占8 个字节(64位)内存空间,+/- 1.7e +/- 308 (~15 个数字)浮点形式存储
long double 16长双精度型 16 个字节(128位)内存空间,可提供18-19位有效数字。浮点形式存储

精度排行(由低到高)

short int<=int<=long int<=long long int

float<=double<=long double

二、数值计算

1.类型转换

整型、实型(常量)、字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算,转换从低级到高级。

低———————————————————>高
byte, short, char—> int —> long—> float —> double

数据类型转换满足如下规则:

  • 不能对boolean类型进行类型转换。
  • 赋值、表达式计算、函数传参时发生自动数据类型转换。
  • 不能把对象类型转换成不相关类的对象。
  • 在把容量大的类型转换为容量小的类型时必须使用强制类型转换:var = (typename) value
  • 转换过程中可能导致溢出或损失精度。

2.数据溢出

数据溢出指变量的值超出了其数据类型能表示的最大数值范围。当变量的数据类型所提供的位数无法适应某个值时,就会发生溢出(上溢)或下溢。
上溢:
假设short int类型变量中存储了32767的二进制表示
0111 1111 1111 1111 + 1 = 1000 0000 0000 0000
32767 + 1 = -32768
同样地,当一个整数变量保存的数值在其数据类型负值范围的最远端(即最小负值),那么当它被减去 1 时,其高位中的 1 将变为 0,结果数将被解释为正数。这是溢出的另一个例子。
下溢:
浮点值还会遇到下溢的情况。当一个值太接近于零时,就可能会发生这种问题,过小的数字需要更多数位的精度来表示它,因而无法存储在保存它的变量中。

3.移位操作

变量A = 0011 1100

  • << 二进制左移运算符。左操作数的值向左移动右操作数指定的位数。A << 2 将得到 240,即为 11110000。
  • 。>>二进制右移运算符。左操作数的值向右移动右操作数指定的位数。 A >> 2 将得到 15,即为 0000 1111
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值