c++算法学习-4

day12序

位运算和操作符属性

1.操作符的分类

2.⼆进制和进制转换

2进制和10进制互转

3.二进制转八和十六进制

4.原码、反码、补码


整数在内存中是以补码 的形式存储的,整数在参与位运算的时候,也都是使用内存中的补码进行计算的,计算的产生的结果也是补码 ,需要转换成原码才是真实值

5.例题

10进制转换n进制

n进制转换10进制

进制转换

6.位运算操作符

cpp 复制代码
<<   左移操作符
>>   右移操作符
&    按位与操作符
|    按位或操作符
^    按位异或操作符
~    按位取反操作符

左移操作符


右移操作符

原该值:


按位与操作符


按位或操作符


按位异或操作符


按位取反操作符

7.判断奇数和偶数

比如5是101 1是001 那么结果是001为1 所以为odd

8.保留⼆进制位中的指定位

应用场景

9.获取二进制中的指定位

这个是核心代码模式 只需要完成函数就行

平台里面已经把43无符号的正星星传递到uint32_t
应用场景

10.将指定二进制位设置为1

x |= (i<<4)


应用场景

11.将指定⼆进制位设置为0

应用场景

12.反转指定二进制位

应用场景

13.将⼆进制中最右边的1变为0

1:01 2:10 4:100 8:1000
应用场景

14.只保留二进制中最右边的1


应用场景

15.异或的巧用


使用异或交换两个数的值,只能适用于整形类型,因为异或运算仅适用于整型类型。

例题:

将数组里面的数组进行异或 当相同的时候为0

因为可以交换 所以2 3 2 可以为2 2 3

day13

16.操作符属性

结构体和类

cpp 复制代码
结构体是⼀种⾃定义的类型,使⽤这种⾃定义类型可以描述⼀些复杂对象。
前⾯我们学习的都是单⼀的数据类型,⽐如: char 、 short 、 int 、 double 类型,但是我们
现实⽣活中总是有写复杂对象,⽐如:⼈、书等,这些复杂对象,仅仅使⽤单⼀的数据类型是不能描
述的。⽐如:描述⼀本书,书有作者、出版社、定价等信息;描述⼀个⼈,⼈有名字、性别、年龄、
⾝⾼、体重等信息。那怎么描述这些复杂对象呢?
C++中引⼊了结构体和类来解决这些问题。在C++中结构体和类是相似的,这⾥⾸先介绍结构体。

1.结构体类型声明和变量定义

cpp 复制代码
struct Stu​ 是结构体类型。
s1和s是结构体变量

在创建变量的时候,结构体类型中的 struct 就可以省略了。
在创建结构体变量的时候,结构体变量的名字不能和结构体类型的名字相同。
声明的结构体类型是不占⽤内存空间,当使⽤结构体类型创建了变量后,才向内存申请了空间的。
结构体变量可以是全局变量,也可以是局部变量。

2.结构体变量的特点

结构体的初始化


结构体整体操作


结构体成员的访问


结构体嵌套

3.结构体的成员函数

C++中的结构体和C语言结构体的有⼀个比较大的差异就是:C++中的结构体中除了有成员变量之外,还可以包含成员函数。

4.运算符重载

输出:

名字:张三

语文:90

数学:80

总分:170

5.结构体排序 - sort


对字符串中的字符进行排序,默认排序的结果依然是升序


自定义排序


comp 表示可以自定义⼀个排序方法


结构体中重载()运算符-仿函数


排序结构体数据

init_stu():是一个函数(方法)。在编程里,"init"通常是初始化的缩写,所以这通常是用来给这个对象"赋初值"或"准备数据"的函数。


结构体和类的区别

1.CPP43 加号运算符重载
cpp 复制代码
#include <iostream>
using namespace std;

class Time {

    public:
        int hours;      // 小时
        int minutes;    // 分钟

        Time() {
            hours = 0;
            minutes = 0;
        }

        Time(int h, int m) {
            this->hours = h;     可以省略this->没啥用
            this->minutes = m;
        }

        void show() {
            cout << hours << " " << minutes << endl;
        }

        // write your code here......
        

};

int main() {

    int h, m;
    cin >> h;
    cin >> m;

    Time t1(h, m);
    Time t2(2, 20);

    Time t3 = t1 + t2;
    t3.show();
    
    return 0;
}

在进行t1+t2的时候会调用t1.operator+(t2)因为只有一个t2所以()里面只有一个变量(const Time& t)

Time ret通过是同Time进行创建的ret(0,0)

minutes指的是t1的 而t.minutes是t2的

2.CPP64 重载小于号
cpp 复制代码
#include <iostream>
using namespace std;

class Time {

    public:
        int hours;      // 小时
        int minutes;    // 分钟

        Time() {
            hours = 0;
            minutes = 0;
        }

        Time(int h, int m) {
            this->hours = h;
            this->minutes = m;
        }

        void show() {
            cout << hours << " " << minutes << endl;
        }

        // write your code here......
        

};

int main() {
    int h, m;
    cin >> h;
    cin >> m;

    Time t1(h, m);
    Time t2(6, 6);
	
    if (t1<t2) cout<<"yes"; else cout<<"no";
    return 0;
}
3.P5742 【深基7.例11】评等级
4.B2125 最高分数的学生姓名


使用排序的方式也是可以的:

5.B2131 甲流病人初筛

6.找出前五名
7.P1093 NOIP 2007 普及组 奖学金
8.生日

相关推荐
蒸蒸yyyyzwd6 小时前
秋招不熟悉力扣学习笔记1
笔记·学习·leetcode
小弥儿7 小时前
GitHub今日热榜 | 2026-08-11:图原生基础设施首日登顶
学习·开源·github
for_ever_love__10 小时前
python基础语法学习: 数据容器
windows·python·学习
云空11 小时前
《电子专业完整学习路线图(分两套:本科四年版 / 零基础自学速成版)》
科技·学习·学习方法·高考
min(a,b)11 小时前
学习第16天:LangGraph 与 Agent 工作流编排
学习
woshihuanglaoshi11 小时前
鸿蒙技术进阶全景高级成长体系:从初中级到架构师的技能树/学习路径/项目实战/认证体系系统性方法论
学习·华为·harmonyos
AI即插即用11 小时前
即插即用系列 | IEEE TMI PLG-HN:原型学习引导的 CNN-Transformer 混合网络,攻克乳腺肿瘤分割难题
人工智能·深度学习·神经网络·学习·目标检测·cnn·transformer
leo_messi9413 小时前
langchain学习(三) - tools使用
学习·langchain
for_ever_love__13 小时前
python基础语法学习: 变量, 输入输出, 运算符
网络·python·学习
学习和思考13 小时前
非自动化专业如何自学PLC?我的6个月学习路线图
笔记·学习·自动化·学习方法