GESP三级知识点整理-真题
1. 数据编码
原码、反码、补码
- 原码:符号位(0正1负)+ 二进制绝对值
示例:+5 → 0 0101,-5 → 1 0101
- 反码:正数同原码;负数符号位不变,其余位取反
示例:-5 → 1 1010
- 补码:正数同原码;负数为反码+1
示例:-5 → 1 1011
计算机中整数以补码存储
2. 进制转换;
| 转换类型 |
方法 |
示例 |
| 二进制 → 十进制 |
按权展开求和 |
1011 → 1×2³+0×2²+1×2¹+1=11 |
| 十进制 → 二进制 |
除2取余法(逆序排列) |
11 → 1011 |
| 二进制 ↔ 八/十六进制 |
每3/4位分组转换 |
11010110 → 八进制(326),十六进制(D6) |
3. 位运算
| 运算符 |
功能 |
示例 |
& |
按位与(清零特定位) |
6 & 3 → 2 (0110 & 0011=0010) |
| |
按位或(置位特定位) |
6 | 3 → 7 |
~ |
按位取反 |
~6 → -7(补码) |
^ |
异或(相同为0) |
6 ^ 3 → 5 |
<< |
左移(等价×2) |
6 << 1 → 12 |
>> |
右移(等价÷2) |
6 >> 1 → 3 |
4. 算法概念与描述
描述方式
进制判断
#include <bits/stdc++.h>
using namespace std;
int main() {
// 2
// 15A6F
// 1011
/*
int n;
cin n
while(n--)
is16=0,is10=0,is8=0,is2=0
cin >> s;
for i=o to s[i] i++
if s[i]>='A' && s[i]<='F'
is16=1
else if s[i]>='8' && s[i]<='9'
is10 =1
else if s[i]>='2' && s[i]<='7'
is8 = 1
else if s[i]>='0' && s[i]<='1'
is2 =1
if is16
0 0 0 1
else if is10
0 0 1 1
else if is8
0 1 1 1
else if is2
1 1 1 1
else
0 0 0 0
*/
return 0;
}
分鱼
#include <bits/stdc++.h>
using namespace std;
int main() {
int n, i, ans = 0;
//暴力枚举: 开始(k=1 to ?)
//每一份鱼的数量
int k = 1;
while (1) {
bool f = 1;
ans = n * k + i;
for (int j = 1; j < n; j++) {
if (ans % (n - 1) != 0) {
f = 0;
break;
}
ans = ans / (n - 1) * n + i;
}
if(f==1){
break;
}
k++;
}
cout<< ans;
return 0;
}
输出数字
char arr[4][5] = {
{// 数字0
".....", ".***.", ".***.", ".***.", "....."},
{// 数字1
"****.", "****.", "****.", "****.", "****."},
{// 数字2
".....", "****.", ".....", ".****", "....."},
{// 数字3
".....", "****.", ".....", "****.", "....."}};