信息学奥赛初赛天天练-27-CSP-J2022阅读程序位运算、数据类型范围、进制转换攻略

news2024/10/7 18:30:13

PDF文档公众号回复关键字:20240612
在这里插入图片描述

2022 CSP-J 阅读程序1

阅读程序(判断题1.5分 选择题3分 共计40分 )

01 #include<iostream>
02 
03 using namespace std;
04 
05 int main()
06 {
07     unsigned short x,y;
08     cin>>x>>y;
09     x = (x | x<<2) & 0x33;
10     x = (x | x<<1) & 0x55;
11     y = (y | y<<2) & 0x33;
12     y = (y | y<<1) & 0x55;
13     unsigned short z = x | y << 1;
14     cout<<z<<endl;
15     return 0;
16 }

假设输入的x、y均是不超过15的自然数,完成下面判断题和选择题

判断题

16.删去第7行与第13行的unsigned,程序行为不变 ( )

17.将第7行与第13行的short均改为char,程序行为不变( )

18.程序总是输出一个整数"0"( )

19.当输入为"2 2"时,输出为"10"( )

20.当输入为"2 2"时,输出为"59" ( )

单选题

21.当输入为"13 8"时,输出为( )

A. “0” B. “209” C “197” D. “226”

2 相关知识点

位运算

1) 左移(<<)、右移(>>)

左移

左移1位,所有位都左移,末尾补0

右移

右移1位,所有位都右移,首尾补0

示例代码

//左移 <<  右移 >>
#include<bits/stdc++.h>
using namespace std;

int main(){
	int a=3;
	/*
	  3 对应二进制 
	  0000 0011 
	  左移1位,所有位都左移,末尾补0
	  0000 0110
	  此时对应二进制转十进制为6 
	*/
	int b=3<<1; 
	cout<<"b的值为:"<<b<<endl;//所以b的值为6 
	int c=8;
	/*
	  8 对应二进制 
	  0000 1000 
	  右移1位,所有位都右移,首尾补0
	  0000 0100
	  此时对应二进制转十进制为4 
	*/
	int d=c>>1;
	cout<<"d的值为:"<<d;//所以d的值为4
	return 0;
}

2) 按位与 (&)

运算规则,按位与的2个位同时为1时,结果为1,否则为0

示例代码

#include<bits/stdc++.h>
using namespace std;

int main(){
	int a=5;
	int b=6;
	/*
	5对应的二进制为
	0000 0101 
	6对应的二进制为
	0000 0110
	所以 5 & 6
	0000 0101
  & 0000 0110
  -------------
    0000 0100
    转对应10进制为4 
	*/ 
	int c=a&b;
	cout<<"c的值为:"<<c; //输出c的值为4 
	return 0;
}

3) 按位或 (|)

运算规则,按位或的2个位其中有1个为1,结果为1,否则为0

示例代码

#include<bits/stdc++.h>
using namespace std;

int main(){
	int a=5;
	int b=6;
	/*
	5对应的二进制为
	0000 0101 
	6对应的二进制为
	0000 0110
	所以 5 & 6
	0000 0101
  | 0000 0110
  -------------
    0000 0111
    转对应111进制为7 
	*/ 
	int c=a|b;
	cout<<"c的值为:"<<c; //输出c的值为7   
	return 0;
}

4) 位运算符优先级

  /*
     左移 右移     >      按位与     >    异或      >     或
     <<   >>     >        &        >     ^       >      |
  */

5) unsigned 关键字

用于声明无符号整数类型。无符号整数类型只能表示非负整数,即它们的值总是大于或等于零

例如

short是16为二进制组成,第1位是符号位,表示范围-32768~32767之间
unsigned short是16为二进制组成,无符号位, 表示范围0~65535之间

#include<bits/stdc++.h>
using namespace std;
/*
 无符号关键字
 short是16为二进制组成,第1位是符号位,表示范围-32768~32767之间
 unsigned short是16为二进制组成,无符号位, 表示范围0~65535之间
*/ 
int main(){
	short a=32769;//超出了short的范围 
	unsigned short b=32769;//在范围内可以正常表示 
	cout<<"a的值为:"<<a<<endl; //输出不正确 
	cout<<"b的值为:"<<b<<endl;
	return 0;
}
/* 
a的值为:-32767 
b的值为:32769
*/

6) 进制转换

十六进制转二进制

16进制1位对应二进制4位,逐位进行转换

(A4)H = (1010 0100)B =(10100100)B

3 思路分析

假设输入的x、y均是不超过15的自然数,完成下面判断题和选择题

判断题

16.删去第7行与第13行的unsigned,程序行为不变 ( T )

分析

//x、y均是不超过15的自然数,观察程序第9行

/*
x = (x | x<<2) & 0x33;
x最大为15,对应二进制1111
x<<2对应二进制 111100
x | x<<2= 1111 | 111100 = 111111 //此时和0x33与最大,因为x比0x33小,x二进制对应位不是1的话&0x33 对应位的1会变0
0x33对应二进制00110011
//(x | x<<2) & 0x33 =111111 & 00110011 = 00110011 = 0x33 
*/

//第9行执行完x最大为0x33 =00110011
(x | x<<1)=00110011|01100110=01110111
(x | x<<1) & 0x55=01110111 & 01010101=01010101=0x55 //此时也是最大值,因为y的值比0x55小,x二进制对应位不是1的话&0x55对应位的1会变0
    
//第11行和12行同9和10行,所以输入x和y都为15时最大
//执行13行  x | y << 1;
01010101|10101010=11111111=255

unsigned short是16为二进制组成,无符号位, 表示范围0~65535之间
去除unsigned后,short是16为二进制组成,第1位是符号位,表示范围-32768~32767之间
满足最大值255,所以没影响

17.将第7行与第13行的short均改为char,程序行为不变( F )

分析

unsigned char的取值范围0~255,根据16题最大值是255,取值范围满足
cout<<z<<endl;//z是char类型,输出的是255对应的ascii码,不能正确输出255数字
所以错误

18.程序总是输出一个整数"0"( F )

分析

程序不是总输出0
例如 16题中,x=15,y=15时,输出结果为255

19.当输入为"2 2"时,输出为"10"( F )

分析

//x=2时,执行 (x | x<<2)

0000 0010 |0000 1000 =0000 1010
//执行 x & 0x33
 //0x33 =00110011
0000 1010 & 0011 0011=0000 0010
//执行 (x | x<<1)
0000 0010 | 0000 0100=0000 0110
//执行 x & 0x55 //0x55=01010101
0000 0110 & 0101 0101=0000 0100=4

//对y进行操作 y=2 和x操作相同
y=4
//执行 z = x | y << 1;
// 执行  y << 1
y=0000 0100<<1=0000 1000
z=x | y=0000 0100 | 0000 1000=0000 1100=12
输出结果为12,所以本题输出10是错误的

20.当输入为"2 2"时,输出为"59" ( F )

分析

参考19题,输出结果应该是12,输出59结果是错误的

单选题

21.当输入为"13 8"时,输出为( )

A. “0” B. “209” C “197” D. “226”

分析

//x=13,执行 (x | x<<2)

0000 1101 | 0011 0100 =0011 1101
//执行 x & 0x33
//0x33 =00110011
0011 1101 & 0011 0011=0011 0001
//执行 (x | x<<1)
0011 0001 | 0110 0010=0111 0011
//执行 x & 0x55 //0x55=01010101
0111 0011 & 0101 0101=0101 0001=81
x=0101 0001=81
    
//y=8,执行 (x | x<<2)
0000 1000 |0010 0000 =0010 1000
//执行 x & 0x33
//0x33 =00110011
0010 1000 & 0011 0011=0010 0000
//执行 (x | x<<1)
0010 0000 | 0100 0000=0110 0000
//执行 x & 0x55 //0x55=01010101
0110 0000 & 0101 0101=0100 0000=64
    
y=0100 0000=64
//执行 z = x | y << 1;
// 执行  y << 1
y=0100 0000<<1=1000 0000
z=x | y=0101 0001 | 1000 0000=1101 0001 =128 + 64 +16 +1 = 209
所以选B

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1816987.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

DB-Engines Ranking 2024年6月数据库排行

DB-Engines Ranking 2024年6月数据库排行 DB-Engines排名根据数据库管理系统的受欢迎程度进行排名。排名每月更新一次。 2024年6月&#xff0c;共有421个数据库进入排行。 排行榜 前15名趋势图 关系型数据库前 10 名 键值数据库前 10 名 文档数据库前 10 名 时序数据库前 10 …

MySQL修改存储数据文件目录

MySQL修改存储数据文件目录&#xff0c;记录遇到的一个小麻烦 前提&#xff1a;使用mysql的exe文件执行安装时&#xff0c;有时会疏忽的安装到系统&#xff08;C盘&#xff09;&#xff0c;数据量庞大后&#xff0c;会将系统盘占满&#xff0c;为了处理这个问题&#xff0c;则需…

MFC上下文菜单与定时器学习笔记

本博文简单介绍了上下文菜单以及定时器的知识内容&#xff0c;作为笔记发表在csdn上面。 在这里插入图片描述 菜单资源的使用 添加菜单资源加载菜单资源&#xff1a; 注册窗口类时设置菜单创建窗口传参设置菜单在主窗口WM_CREATE消息中利用SetMenu函数设置 加载菜单资…

【Unity】RPG2D龙城纷争(一)搭建项目、导入框架、前期开发准备

更新日期&#xff1a;2024年6月12日。 项目源码&#xff1a;在第四章发布 免责声明&#xff1a;【RPG2D龙城纷争】使用的图片、音频等所有素材均有可能来自互联网&#xff0c;本专栏所有文章仅做学习和教程目的&#xff0c;不会将任何素材用于任何商业用途。 索引 【系列简介】…

winget install 命令快速安装git到Windows系统

打开命令提示符或PowerShell: 使用快捷键Win X&#xff0c;然后选择“Windows PowerShell”或“命令提示符”。你也可以直接在开始菜单中搜索“cmd”或“PowerShell”。 运行winget命令安装Git: 在命令提示符或PowerShell中&#xff0c;输入以下命令并按回车&#xff1a; win…

Allegro光绘Gerber文件、IPC网表、坐标文件、装配PDF文件导出打包

Allegro光绘Gerber文件、IPC网表、坐标文件、装配PDF文件导出打包 一、Gerber文件层叠与参数设置二、装配图文件设置导出三、光绘参数设置四、Gerber孔符图、钻孔表及钻孔文件输出五、输出Gerber文件六、输出IPC网表七、导出坐标文件八、文件打包 一、Gerber文件层叠与参数设置…

服务攻防-数据库安全(数据库与漏洞利用)

1.安全服务的渗透过程 1.1 判断服务 如果要进行安全服务的渗透&#xff0c;我们先需要知道这个服务是否开启了&#xff0c;在数据库这个部分我们的判断方法主要有以下三种&#xff1a; - 扫描端口&#xff1a;对于不同的数据库来说&#xff0c;使用的端口也是不一样的&#x…

智慧金融新视野:银行数据中心可视化大屏的崛起

在数字化浪潮的推动下&#xff0c;银行业正迎来一场前所未有的变革。在这场变革中&#xff0c;银行数据中心可视化大屏以其独特的魅力&#xff0c;为银行的数据分析和决策提供强有力的支持。 随着金融科技的不断发展&#xff0c;银行对于数据处理和分析的需求日益增长。银行数据…

umi 获取umirc下router配置的name

解决 import { useRouteProps } from umijs/maxexport default function Page() {const routeProps useRouteProps()console.log(routeProps)// use routeProps.custom_key }参数如下图 文档 https://umijs.org/docs/api/api#userouteprops

Latex | 数学公式

Latex 最近在学习使用 LaTeX 来敲公式&#xff0c;写材料。说实话&#xff0c;这个工具在写公式方面&#xff0c;确实堪称神器&#xff01;不只是我&#xff0c;连爱因斯坦要是看到它&#xff0c;估计都会点个赞。 在这里&#xff0c;我也得给大家分享一个宝藏网址&#xff1…

关闭windows11的Defender病毒防护

windows11自带的Defender病毒防护并不是每个人都需要&#xff0c;有些人需要关掉它。网上一搜&#xff0c;出现的都在说在安全中心关闭&#xff0c;但这样关闭后依旧随时都在防护着&#xff0c;有些小软件一运行就会给删掉。 以下的方法也是在网上搜索的&#xff0c;但行之有效…

3-哈希表-71-三数之和-LeetCode15

3-哈希表-71-三数之和-LeetCode15 参考&#xff1a;代码随想录 LeetCode: 题目序号15 更多内容欢迎关注我&#xff08;持续更新中&#xff0c;欢迎Star✨&#xff09; Github&#xff1a;CodeZeng1998/Java-Developer-Work-Note 技术公众号&#xff1a;CodeZeng1998&#xff…

2024年6月15日(星期六)骑行老厂村

2024年6月15日 (星期六) 骑行老厂村&#xff08;新路&#xff09;&#xff0c;早8:30到9:00&#xff0c; 大观公园门囗集合&#xff0c;9:30准时出发【因迟到者&#xff0c;骑行速度快者&#xff0c;可自行追赶偶遇。】 偶遇地点:大观公园门囗集合 &#xff0c;家住东&#xf…

15.RedHat认证-Ansible自动化运维(上)

15.RedHat认证-Ansible自动化运维(上) RHCE8-RH294 Ansible自动化&#xff08;Ansible版本是2.8.2&#xff09; Ansible介绍 1.Ansible是什么&#xff1f; Ansible是一个简单的强大的无代理的自动化运维工具&#xff08;Ansible是自动化运维工具&#xff09;Ansible特点 简…

八字综合测算网整站源码程序/黄历/灵签/排盘/算命/生肖星座/日历网/周公解梦

八字综合测算网整站源码程序/黄历/灵签/排盘/算命/生肖星座/日历网/周公解梦 演示地址&#xff1a; https://s24.gvyun.com/ 手机端地址&#xff1a; https://ms24.gvyun.com/ 网站功能分类&#xff1a; 八字&#xff1a;八字测算&#xff1b;日干论命&#xff1b;称骨论命…

争议不断:金额到底是用Long还是BigDecimal?

先问个问题&#xff0c;在开发过程中你是选择用Long还是BigDecimal来处理金额&#xff1f; 浮点数陷阱 为什么排除float和double 浮点数无法精确表示许多十进制数。 我们希望输出0.3&#xff0c;但由于浮点数的表示问题&#xff0c;实际结果却是0.30000000000000004&#xff…

Python强化学习(Reinforcement Learning, RL)库之gymnasium使用详解

概要 在强化学习(Reinforcement Learning, RL)领域中,环境(Environment)是进行算法训练和测试的关键部分。gymnasium 库是一个广泛使用的工具库,提供了多种标准化的 RL 环境,供研究人员和开发者使用。通过 gymnasium,用户可以方便地创建、管理和使用各种 RL 环境,帮助…

代码随想录算法训练营第四十三天 | 01背包问题理论基础、01背包问题滚动数组、416. 分割等和子集

背包问题其实有很多种&#xff0c;01背包是最基础也是最经典的&#xff0c;软工计科学生一定要掌握的。 01背包问题 代码随想录 视频讲解&#xff1a;带你学透0-1背包问题&#xff01;| 关于背包问题&#xff0c;你不清楚的地方&#xff0c;这里都讲了&#xff01;| 动态规划经…

如何将jpg图像添加文字并转换成无压缩的dicom图像

操作系统ubuntu 20 安装imagemagick sudo apt install imagemagick 安装dcmtk sudo apt install dcmtk 脚本如下 #!/bin/bash# Font font"/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf"# Font size fontsize30# Font color fontcolor"red" conver…

《web应用技术》第十一次作业

1、验证过滤器进行权限验证的原理。 代码展示&#xff1a; Slf4j WebFilter(urlPatterns "/*") public class LoginCheckFilter implements Filter { Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) thro…