数据压缩1——计算机编程中的各种数据类型(以C/C++为例)

总结表示形式和计算方法
重点:类型转换、数值溢出、移位等操作

整型

表示形式 字节数及取值范围
int 4字节(-2147438648~+2147438647)
short int 2字节(-32768~32767)
long int 4字节(-2147483648~2147483647)
unsigned int 4字节(0~65535)
unsigned short int 2字节(0~65535)
unsigned long int 4字节(0~4294967295)
  • 整型溢出
    无符号整型溢出后,溢出数据会以2^(8*sizeof(type))做模运算。而符号整型溢出,溢出结果以编译器算得的实际结果为结果,该结果不一定是负数。
    整型溢出有可能会导致程序死循环、产生安全问题或影响内存分配等等。

  • 移位

C语言里所有的位运算都是指二进制数的位运算。

左移“<<”:
a<<m ,a和m必须是整型表达式,要求m>=0。
将整型数a按二进制位向左移动m位,高位移出后,低位补0。
右移“>>”:
a>>m,a和m必须是整型表达式,要求m>=0。
将整型数a按二进制位向右移动m位,低位移出后,高位补0,有符号数补符号位。

浮点型

表示形式 字节数及取值范围
float 4字节(3.4e-38~3.4e38)
double 8字节(1.7e-308~1.7e308)
long double 16字节(1.7e-308~1.7e308)

单精度由float表示,双精度由double表示

  • 浮点数溢出
    上溢时,被赋予一个无穷大的值,printf函数显示的是inf。
    浮点数下溢时,指数部分已经达到最小值,则将尾数部分进行右移,空出首位的二进制数,丢弃最后一位的二进制数。
  • 浮点数不存在移位操作

字符型

表示形式 字节数及取值范围
char 2字节(-128~127)
unsigned char 2字节(0~255)

除了以上基本数据类型,c语言中还有构造类型、指针类型和空类型。数组、结构体等都包含在构造类型中。

类型转换

  1. 强制类型转换
int a = (int)(3.11)//a=3

例1:

const char*c;
string s="1234";
c=s.c_str();//c的结果为1234

例2:

int i=0;
string s('test');
char str[10];
strcpy(str,c_str())
for(i=0;i<s.length();i++)
{
	str[i]=s[i];
}
#include<stdlib.h>
char *numchars="1234";
int num=atoi(numberchars);//结果为1234
string s="1234";
int b=stoi(s);//结果为1234
发布了1 篇原创文章 · 获赞 0 · 访问量 7

猜你喜欢

转载自blog.csdn.net/weixin_45430791/article/details/104344409