课程目录展开/折叠
- 课程直播回放
- 第1课 C++编程快速入门
- 第2课 C++程序设计基础知识
- 第3课 基本输入输出和数据类型
- 第4课 基本输入输出和数据类型
- 第5课 基本输入输出和数据类型
- 第6课 数据类型和运算符
- 第7课 数据类型和运算符
- 第8课 C++中的运算符
- 第9课 C++中的运算符
- 第10课 C++中的运算符
- 第11课 C++中的运算符
- 第12课 条件判断和选择语句
- 第13课 条件判断和选择语句
- 第14课 条件判断和选择语句(刷题课)
- 第15课 循环
- 第16课 循环
- 第17课 循环
- 第18课 循环(刷题课)
- 第19课 循环(刷题课)
- 第20课 循环(刷题课)
- 第21课 循环(刷题课)
- 第22课 循环(刷题课)
- 第23课 循环嵌套
- 第24课 循环嵌套(刷题课)
- 第25课 数组
- 第26课 数组
- 第27课 数组(刷题课)
- 第28课 数组(刷题课)
- 第29课 数组(刷题课)
- 第30课 数组
- 第31课 二维数组
- 第32课 二维数组
- 第33课 数组(刷题课)
- 第34课 数组(刷题课)
- 第35课 字符串
- 第36课 字符串
- 第37课 字符串
- 第38课 字符串
- 第39课 字符串
- 第40课 字符串
- 第41课 字符串
- 第42课 字符串
- 第43课 字符串
- 第44课 指针
- 第45课 指针
- 第46课 指针
- 第47课 指针
- 第48课 指针
- 第49课 指针
- 第50课 指针
- 第51课 指针
- 第52课 指针
- 第53课 指针
- 第54课 函数
- 第55课 函数
- 第56课 函数
- 第57课 函数
- 第58课 函数
- 第59课 递归函数
- 第60课 递归函数
- 第61课 递归函数
- 第62课 递归函数
- 第63课 结构体和共用体
- 第64课 结构体和共用体
- 第65课 结构体和共用体
- 第66课 结构体和共用体
- 第67课 结构体和共用体
- 第68课 文件和文件读写
- 第69课 文件和文件读写
- 第70课 面向对象和类
- 第71课 面向对象和类试学
- 第72课 面向对象和类试学
- 第73课 STL中常用算法函数和类试学
- 第74课 整数编码和位运算试学
- 第75课 C++课程总结以及后续学习规划建议试学
第74课 整数编码和位运算
播放快捷键
播放/暂停:空格(或鼠标单击) 全屏:F(或鼠标双击) 退出全屏:Esc
快进10 / 30 / 60秒:方向键→ / Ctrl + 方向键→ / Shift + 方向键→
快退10 / 30 / 60秒:方向键← / Ctrl + 方向键← / Shift + 方向键←
本节课讲解配套PPT&板书:





























本节课讲解到的源代码
源代码下载:第74课 整数编码和位运算-源代码下载
1. 不同进制的表示-1
#include <bits/stdc++.h>
using namespace std;
int main()
{
int a = 0b1111; // 0b0000....0001111
cout << a << endl;
int b = 077;
cout << b << endl;
int c = 0xAF;
cout << c << endl;
int d = 123;
cout << d << endl;
return 0;
}
2. 输出不同进制的数-1
#include <bits/stdc++.h>
using namespace std;
int main()
{
int a = 123;
cout << a << endl;
// bitset表示二进制的一个模板类
cout << bitset<8>(a) << endl;
cout << bitset<32>(a) << endl;
cout << bitset<8>(-5) << endl;
cout << bitset<32>(-5) << endl;
cout << oct << a << endl;
cout << dec << a << endl;
cout << hex << a << endl;
cout << uppercase << hex << a << endl;
cout << showbase << uppercase << hex << a << endl;
return 0;
}
3. 输出不同进制的数-2
#include <bits/stdc++.h>
using namespace std;
int main()
{
int a = 123;
printf("%d\n", a);
printf("%o\n", a);
printf("%x\n", a);
printf("%X\n", a);
return 0;
}
4. 有符号数和无符号数-1
#include <bits/stdc++.h>
using namespace std;
int main()
{
/*
int i1 = 0xffffffff; // signed int 有符号整数
unsigned int i2 = 0xffffffff; // 无符号数
cout << i1 << endl;
cout << i2 << endl;
cout << fixed << setprecision(0) << pow(2, 32) - 1 << endl;
*/
/*
// char => 可能是有符号数,也可能是无符号数
signed char c1 = 0xff;
unsigned char c2 = 0xff;
cout << (int)c1 << endl; // 整型提升的规则 0xff ff ff ff
cout << (int)c2 << endl; // 0x00 00 00 ff
*/
// if (4294967295 < 1)
if (-1U < 1) cout << "yes" << endl;
else cout << "no" << endl;
cout << -1U << endl; // (unsigned int)0xff ff ff ff
return 0;
}
5. 有符号数和无符号数-2
#include <bits/stdc++.h>
using namespace std;
int main()
{
/*
cout << INT_MAX << endl; // 0b0111 11....1 => 0x7f ff ff ff
cout << INT_MIN << endl; // 0b1000 000....0 => 0x80 00 00 00
*/
int mx = 0x7fffffff;
cout << mx << endl;
int mn = 0x80000000;
cout << mn << endl;
char mxc = 0x7f;
char mnc = 0x80;
cout << (int)mxc << endl;
cout << (int)mnc << endl;
unsigned int umx = 0xffffffff;
cout << umx << endl;
return 0;
}
6. 有符号数和无符号数-3
#include <bits/stdc++.h>
using namespace std;
int main()
{
int mx = 0xffffffff;
printf("%d\n", mx);
printf("%u\n", mx);
cout << mx << endl;
cout << (unsigned int)mx << endl;
return 0;
}
7. 位运算符-1
#include <bits/stdc++.h>
using namespace std;
int main()
{
int a = 5, b = 3;
// 0..0 0101
// 0..0 0011
// cout << (a & b) << endl;
cout << bitset<8>(a) << endl;
cout << bitset<8>(b) << endl;
cout << bitset<8>(a & b) << endl;
cout << bitset<8>(a | b) << endl;
cout << bitset<8>(a ^ b) << endl;
cout << bitset<8>(~a) << endl;
cout << bitset<8>(~b) << endl;
cout << bitset<8>(a << 1) << endl;
cout << bitset<8>(a >> 1) << endl;
cout << bitset<8>(b >> 10) << endl;
return 0;
}
8. 位运算符-2
#include <bits/stdc++.h>
using namespace std;
int main()
{
int a = 1; // 左移n位 x (2^n)
cout << (a << 1) << endl;
cout << (a << 2) << endl;
cout << (a << 3) << endl;
cout << (a << 4) << endl;
cout << (a << 5) << endl;
cout << (a << 31) << endl;
int a2 = 10;
cout << (a2 << 3) << endl;
int b = 128; // 右移n位,相当于/ (2^n)
cout << (b >> 1) << endl;
cout << (b >> 2) << endl;
cout << (b >> 3) << endl;
cout << (b >> 4) << endl;
cout << (b >> 5) << endl;
cout << (b >> 6) << endl;
cout << (b >> 7) << endl;
cout << (b >> 8) << endl;
return 0;
}
9. 位运算符-3
#include <bits/stdc++.h>
using namespace std;
int main()
{
int a = 1;
cout << (a ^ a) << endl;
cout << (a ^ 0) << endl;
int b = 2, c = 3;
cout << (a ^ b) << endl;
cout << (b ^ a) << endl;
return 0;
}
本节课课后练习题
本节课答疑
建议大家有问题先通过AI答疑(比如:DeepSeek 等),AI时代需要学会使用AI辅助学习
陈远龙老师视频讲解:如何使用DeepSeek进行答疑?
通过AI未能获得满意解答的,可以联系陈远龙老师答疑
目录