day6青训

77 阅读1分钟

1.1.1 整数的表示

:大端和小端储存(高字节——低字节,低字节——高字节)

二进制(补码表示):按权展开 具体原码反码补码见、

给定一组进制位[x_w-1,x_w-2,.....,x_0],下面是一个式子,u为十进制下的数,xi为个进制下各位的数,?为进制。

u=i=0w1xiiu=\sum_{i=0}^{w-1}{x_i?^i}

小数:(0.625)10=(0.101)2:

0.6252=1.251.....0.252=0.50.....0.52=11......0.625*2=1.25 取1 ..... 0.25*2=0.5取0..... 0.5*2=1 取1......

1.1.2浮点数的表示和精度

f=(1)smbnf=(-1)^s*m*b^n

这是一个浮点数的表示: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: 1B0 ~1
 char: 1B-128 ~127
 unsigned char: 1B0 ~255
 short int: 2B-32768 ~32767
 unsigned short int: 2B0 ~65535
 int: 4B-2147483648 ~2147483647
 unsigned int: 4B0 ~4294967295
 long int: 4B-2147483648 ~2147483647
 unsigned long int: 4B0 ~4294967295
 long long int: 8B-9223372036854775808 ~9223372036854775807
 unsigned long long int: 8B0 ~18446744073709551615
 float: 4B1.17549e-38 ~3.40282e+38
 double: 8B2.22507e-308 ~1.79769e+308
 long double: 16B3.3621e-4932 ~1.18973e+4932