Skip to content

Latest commit

 

History

History
100 lines (71 loc) · 3.04 KB

计算机基础知识.md

File metadata and controls

100 lines (71 loc) · 3.04 KB

计算机基础知识

1.字节数

类型 字节数(1个字节八位)
bool 1
char 1
int 2
short 2
long 4
float 4
unsigned long 4/8(32/64)
long long 8
double 8
指针 4/8(32/64)

2.取值范围

image-20200715105519189

image-20200715105545017

类型声明符 字节数 取值范围
int 2 -3276832768 即 -2 ^15^(2 ^15^-1)
short [int] 2 -3276832768 即 -2 ^15^(2 ^15^-1)
long [int] 4 -21474836482147483648 即-2 ^31^(2 ^31^-1)
unsigned [int] 2 065535 即 0(2 ^16^-1)
unsigned short 2 065535 即 0(2 ^16^-1)
unsigned long 4 04294967295 即 0(2 ^32^-1)
float 4 -3.4x10^-38^~3.4x10^-38^
double 8 -1.7x10^-308^~1.7x10^-308^
long double 16 -1.2x10^-4293^~1.2x10^-4293^

3.移位操作符>>,<<和按位与&

// 题目描述
// 原理:ip地址的每段可以看成是一个0-255的整数,把每段拆分成一个二进制形式组合起来,然后把这个二进制数转变成
// 一个长整数。
// 举例:一个ip地址为10.0.3.193
// 每段数字             相对应的二进制数
// 10                   00001010
// 0                    00000000
// 3                    00000011
// 193                  11000001
// 组合起来即为:00001010 00000000 00000011 11000001,转换为10进制数就是:167773121,即该IP地址转换后的数字就是它了。

 

// 的每段可以看成是一个0-255的整数,需要对IP地址进行校验

 
#include <iostream>
using namespace std;
int main()
{
    long long n, a1, a2, a3, a4;
    char ch;
    while(cin >> a1 >> ch >> a2 >> ch >> a3 >> ch >> a4)
    {
        cin >> n;
        long long res = 0;
        res += (a1 << 24)  + (a2 << 16) + (a3 << 8)  + a4;
        a1 = n >> 24;
        a2 = (n >> 16) & 255;
        a3 = (n >> 8) & 255;
        a4 = n & 255;
        cout << res << endl << a1 << '.' << a2 << '.' << a3 << '.' << a4 << endl;
    }
    return 0;
}

4.输入输出流

#include "sstream"

stringstream ss

ss<<str

ss>>num

可用于类型转换

5.智能指针

  • auto_ptr存在指向不确定性,新版c++基本已经摒弃了
  • unique_ptr一个特定对象只能有唯一指针
  • share_ptr一个特定对象有多个指针