计算机重要知识

C plus算法C plus约 1794 字大约 6 分钟...

提示

计算机重要知识

计算机重要知识

Created: September 15, 2022 8:35 AM

进制计算

1、二进制转十进制:

例如二进制的:101001转换过程:120+0*21+022+1*23+0*24+1*25=1+8+32=41结果:41

2、十进制转二进制:

用辗转法将十进制转换成二进制:例如十进制的:41

41/2=20---1,

20/2=10---0,

10/2=5----0,

5/2  =2----1,

2/2  =2----0,

1/2  =1----1;

二进制的结果(自下向上组合):101001

3、十进制转十六进制:

第一步先十进制转成二进制,第二步再二进制转16进制例如: 45第一步十进制转成二进制: 45/2=22...1

22/2=11...0 11/2=5.....1 5/2=2.......1 2/2=1.......0 1/2=1.......1 二进制为:101101 检验结果是否正确:120+1*22+123+1*25=1+4+8+32=45

第二步二进制转16进制: 10 1101 十六进制得出最终结果为:2D

.4、十六进制转十进制:

十六进制:2AF(F) 15160+(A)10*161+216^2=15+160+512=687 故此:687

5、二进制转十六进制:

四个一位 不够前面补0:例如100010

0010 0010 2       2  十六进制等于:22

6、十六进制转二进制:

右至左 22故此:100010

CE C        E  (C=12,E=14 ) 1100   1110  二进制结果为:11001110

7、八进制转十六进制:

第一步先八进制转成二进制,第二步再二进制转16进制 例如 24第一步:二进制(三位一个自右到左分隔):10 100   得到:10100第二步:16进制(四位一个自右到左分隔):1 0100

十六进制为:14

8、十六进制转八进制:

步骤:1.十六进制先转成二进制 二进制再转八进制 (自右向左三位一个) 例如:2AF第一步            2   A        F          10 1010  1111

第二步

(00)1 010 101 111

1      2     5    7

八进制结果为:1257

9、二进制转八进制(取三合一法,即从二进制的小数点为分界点,向左(向右)每三位取成一位)

将二进制数101110.101转换为八进制 101 110 101 5 6 5

得到结果:56.5

10、八进制转二进制(八进制的数字是0~7,大于7的不符合八进制的要求,逢八进一):

例如八进制的 7.11 7     1     1 111 001 001一位变成三位 二进制结果为:111.001001

补码计算:

*计算机存储的是原码*、反码、还是补码?open in new window补码

原码的求解规则:

正数:就是它对应的二进制数。

负数:将绝对值对应的二进制最左边位变为1。

所以-11的原码就是10001011。

备注:最左边是符号位,0表示正数,1表示负数,下同。

反码的求解规则:

正数:和原码相同,也就是对应的二进制数。

负数:将原码符号位之外的数字取反,即0变1,1为0。

所以-11的反码是11110100

补码的求解规则:

正数:和反码相同,也就是对应的二进制数。

负数:将反码的最后一位加1。

所以-11的补码就是11110101

知识要点:

1、十进制转二进制是根本

2、8位表示,最左边0代表正,1代表负

3、正数原、反、补相同

4、从原到反再到补,逐步求解不要乱

重载、重写、隐藏

1、重载指在同一范围定义中的同名成员函数才存在重载关系。主要特点是函数名相同,参数类型和数目有所不同。

2、重写指的是在派生类中覆盖基类中的同名函数,重写就是重写函数体要求基类函数必须是虚函数且:

  • 与基类的虚函数有相同的参数个数
  • 与基类的虚函数有相同的参数类型
  • 与基类的虚函数有相同的返回值类型

3、隐藏:

  • 两个函数参数相同,但是基类函数不是虚函数。此时隐藏和重写的区别在于基类函数是否是虚函数
  • 两个函数参数不同,无论基类函数是不是虚函数,都会被隐藏。和重载的区别在于两个函数不在同一个类中

c++中.和->和::和:的区别

A.B,则A为对象或者结构体;

A->B,则A为指针,->是成员提取,A->B是提取A中的成员B,A只能是指向类、结构、联合的指针;

::是作用域运算符,A::B表示作用域A中的名称B,A可以是名字空间、类、结构;

:一般用来表示继承;

c++类中的构造函数

class Student{
public:
    Student(){//默认构造函数,没有参数
        this->age = 20;
        this->num = 1000;
    };  
    Student(int a, int n):age(a), num(n){}; //初始化构造函数,有参数和参数列表
    Student(const Student& s){//拷贝构造函数,这里与编译器生成的一致
        this->age = s.age;
        this->num = s.num;
    }; 

  //定义了一个赋值构造函数
	Student& operator=(const Student& stu);
    Student(int r){   //转换构造函数,形参是其他类型变量,且只有一个形参
        this->age = r;
		this->num = 1002;
    };
    ~Student(){}
public:
    int age;
    int num;
};
  • 默认构造函数和初始化构造函数在定义类的对象,完成对象的初始化工作
  • 复制构造函数用于复制本类的对象
  • 转换构造函数用于将其他类型的变量,隐式转换为本类对象

深拷贝和浅拷贝

浅拷贝

浅拷贝只是拷贝一个指针,并没有新开辟一个地址,拷贝的指针和原来的指针指向同一块地址,如果原来的指针所指向的资源释放了,那么再释放浅拷贝的指针的资源就会出现错误。

深拷贝

深拷贝不仅拷贝值,还开辟出一块新的空间用来存放新的值,即使原先的对象被析构掉,释放内存了也不会影响到深拷贝得到的值。在自己实现拷贝赋值的时候,如果有指针变量的话是需要自己实现深拷贝的。

已到达文章底部,欢迎留言、表情互动~
  • 赞一个
    0
    赞一个
  • 支持下
    0
    支持下
  • 有点酷
    0
    有点酷
  • 啥玩意
    0
    啥玩意
  • 看不懂
    0
    看不懂
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v2.15.2