1.1.1 整数的表示
:大端和小端储存(高字节——低字节,低字节——高字节)
二进制(补码表示):按权展开 具体原码反码补码见、
给定一组进制位[x_w-1,x_w-2,.....,x_0],下面是一个式子,u为十进制下的数,xi为个进制下各位的数,?为进制。
小数:(0.625)10=(0.101)2:
1.1.2浮点数的表示和精度
这是一个浮点数的表示:s为符号,0为正,1为负。m为尾数(有效数字)1<=m<2,b为进制基数,e为阶码。如:12.5对应1100.1,即为(-1)^1*1.10001x2^3;
| S(sign) | E(biased exponent移码) | T(trailing significand field尾数) |
|---|
1.1.3数据类型的储存范围
#include <iostream>
#include <iomanip>
#include <limits>
#include<algorithm>
using namespace std;
int main (int argc,char *argv [])
{
cout<<" bool: " << sizeof(bool)<<"B,"<< (int) numeric_limits<bool>:: min () <<" ~"<< (int) numeric_limits<bool> ::max () <<endl;
cout<<" char: " << sizeof(char)<<"B,"<< (int) numeric_limits<char>:: min () <<" ~"<< (int) numeric_limits<char> ::max () <<endl;
cout<<" unsigned char: " << sizeof(unsigned char)<<"B,"<< (int) numeric_limits<unsigned char>:: min () <<" ~"<< (int) numeric_limits<unsigned char> ::max () <<endl;
cout<<" short int: " << sizeof(short int)<<"B,"<<numeric_limits<short int>::min () <<" ~"<<numeric_limits<short int> ::max () <<endl;
cout<<" unsigned short int: " << sizeof(unsigned short int)<<"B,"<<numeric_limits<unsigned short int>::min () <<" ~"<<numeric_limits<unsigned short int> ::max () <<endl;
cout<<" int: " << sizeof(int)<<"B,"<<numeric_limits<int>::min () <<" ~"<<numeric_limits<int> ::max () <<endl;
cout<<" unsigned int: " << sizeof(unsigned int)<<"B,"<<numeric_limits<unsigned int>::min () <<" ~"<<numeric_limits<unsigned int> ::max () <<endl;
cout<<" long int: " << sizeof(long int)<<"B,"<<numeric_limits<long int>::min () <<" ~"<<numeric_limits<long int> ::max () <<endl;
cout<<" unsigned long int: " << sizeof(unsigned long int)<<"B,"<<numeric_limits<unsigned long int>::min () <<" ~"<<numeric_limits<unsigned long int> ::max () <<endl;
cout<<" long long int: " << sizeof(long long int)<<"B,"<<numeric_limits<long long int>::min () <<" ~"<<numeric_limits<long long int> ::max () <<endl;
cout<<" unsigned long long int: " << sizeof(unsigned long long int)<<"B,"<<numeric_limits<unsigned long long int>::min () <<" ~"<<numeric_limits<unsigned long long int> ::max () <<endl;
cout<<" float: " << sizeof(float)<<"B,"<<numeric_limits<float>::min () <<" ~"<<numeric_limits<float> ::max () <<endl;
cout<<" double: " << sizeof(double)<<"B,"<<numeric_limits<double>::min () <<" ~"<<numeric_limits<double> ::max () <<endl;
cout<<" long double: " << sizeof(long double)<<"B,"<<numeric_limits<long double>::min () <<" ~"<<numeric_limits<long double> ::max () <<endl;
return 0;
}
运行结果QAQ:
bool: 1B,0 ~1
char: 1B,-128 ~127
unsigned char: 1B,0 ~255
short int: 2B,-32768 ~32767
unsigned short int: 2B,0 ~65535
int: 4B,-2147483648 ~2147483647
unsigned int: 4B,0 ~4294967295
long int: 4B,-2147483648 ~2147483647
unsigned long int: 4B,0 ~4294967295
long long int: 8B,-9223372036854775808 ~9223372036854775807
unsigned long long int: 8B,0 ~18446744073709551615
float: 4B,1.17549e-38 ~3.40282e+38
double: 8B,2.22507e-308 ~1.79769e+308
long double: 16B,3.3621e-4932 ~1.18973e+4932