洛谷 P1100 高低位交换

https://www.luogu.org/problemnew/show/P1100

JDOJ 1349: VIJOS-P1201 高低位交换

https://neooj.com:8082/oldoj/problem.php?id=1349

Description

给出一个小于2^32的正整数。这个数可以用一个32位的二进制数表示(不足32位用0补足)。我们称这个二进制数的前16位为“高位”,后16位为“低位”。将它的高低位交换,我们可以得到一个新的数。试问这个新的数是多少(用十进制表示)。         例如,数1314520用二进制表示为0000  0000  0001  0100  0000  1110  1101  1000(添加了11个前导0补足为32位),其中前16位为高位,即0000  0000  0001  0100;后16位为低位,即0000  1110  1101  1000。将它的高低位进行交换,我们得到了一个新的二进制数0000  1110  1101  1000  0000  0000  0001  0100。它即是十进制的249036820。

Input

一个小于2^32的正整数

Output

将新的数输出

Sample Input

1314520

Sample Output

249036820 
 
一开始的思路:
输入十进制,开long long,转二进制。
二进制分别取前16位和后十六位。
交换构成新数。
转回十进制。
 
以上是纯模拟打法,然而我好像忘了进制转换怎么搞了。
 
所以想到了位运算。
所谓位运算就是计算机基于二进制基础上的一种数的转换,针对于十进制数可能理解起来比较困难,但是原理是和我们正常做的四则混合运算等一模一样的,可以找一找位运算的相关知识。
 
分析这道题:
我们知道,int的最大存储量只能有2^31-1,为什么呢?因为int有符号位,占了一个数位。你如果因为这个开long long 并不是很明智,因为有的时候long long 会出一些奇妙的bug,所以我们使用unsigned int,没有符号位,完全符合需求。
然后我们考虑位运算。
位运算是基于二进制基础上的,也就是在进行位运算的过程中,你传进去的十进制数已经变成了二进制,你只需要尽情操作就可以了。
多么美妙啊!省了进制转换。
然后左移十六位,整没了高位。
右移十六位,整没了低位。
这个时候得到的两个数正好是相反的。我们再给它抑或回来。
就顺利的得到了新数。
因为是位运算,输出也省去了进制转换,美滋滋。
 
代码:
#include<cstdio>
using namespace std;
unsigned int n;
int main()
{
scanf("%u",&n);
printf("%u",(n<<^n>>));
return ;
}

VIJOS-P1201 高低位交换的更多相关文章

  1. P1100 高低位交换

    题目描述 给出一个小于2^{32}232的正整数.这个数可以用一个3232位的二进制数表示(不足3232位用00补足).我们称这个二进制数的前1616位为“高位”,后1616位为“低位”.将它的高低位 ...

  2. 【洛谷P1100】高低位交换

    高低位交换 题目链接 这道题非常水,我是用位运算做的 a=n>>16 二进制的“高位”b=n-(a<<16) 二进制的“低位”ans=(b<<16)+a 转换 #i ...

  3. 洛谷——P1100 高低位交换

    P1100 高低位交换 题目描述 给出一个小于2^32的正整数.这个数可以用一个32位的二进制数表示(不足32位用0补足).我们称这个二进制数的前16位为“高位”,后16位为“低位”.将它的高低位交换 ...

  4. 洛谷 P1100 高低位交换

    P1100 高低位交换 题目描述 给出一个小于2^32的正整数.这个数可以用一个32位的二进制数表示(不足32位用0补足).我们称这个二进制数的前16位为“高位”,后16位为“低位”.将它的高低位交换 ...

  5. 洛谷【P1100】高低位交换

    二进制前置技能:https://www.cnblogs.com/AKMer/p/9698694.html 题目传送门:https://www.luogu.org/problemnew/show/P11 ...

  6. 集训作业 洛谷P1100 高低位交换

    这个题简单来说就是把一个数转成32位的2进制数,不够的补0.然后把这个数的前半部分和后半部分互换,再计算结果. 思路简单明了,接下来是代码: #include<iostream> #inc ...

  7. C语言之linux内核实现位数高低位互换

    linux内核实在是博大精深,有很多优秀的算法,我之前在工作中就遇到过位数高低位交换的问题,那时候对于C语言还不是很熟练,想了很久才写出来.最近在看内核的时候看到有内核的工程师实现了这样的算法,和我之 ...

  8. 字节的高低位知识,Ascii,GB2312,UNICODE等编码的关系与来历

    很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物.他们看到8个开关状态是好的,于是他们把这称为"字节". 再后来,他们又做了一些可以处理 ...

  9. Dollar Dayz(大数母函数,高低位存取)

    Dollar Dayz Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 5655   Accepted: 2125 Descr ...

随机推荐

  1. ESA2GJK1DH1K升级篇: STM32远程乒乓升级,基于Wi-Fi模块(ESP8266)AT指令TCP透传方式,MQTT通信控制升级(加入数据校验)

    前言 这节演示下,上两节写的利用MQTT来控制STM32控制的程序 测试准备工作(默认访问我的服务器,改为自己的服务器,请看后面说明) 一,下载BootLoader程序(请自行下载) 首先BootLo ...

  2. Vue 使用lodash库减少watch对后台请求压力

    lodash需要新引入 我使用的是npm方式 使用lodash的_.debounce方法 具体代码: <!doctype html> <html lang="en" ...

  3. 使用Vue封装暂无数据占位图组件

    1. 前言 在日常开发中,页面上肯定有展示数据的需求,但是当某些时候该展示数据的地方此时数据为空时,就会留下一片空白,对用户体验不是很好,那么接下来我们就封装一个空数据时的占位展示图,告诉用户此时用户 ...

  4. python yield from (二)

    #pep380 #1. RESULT = yield from EXPR可以简化成下面这样 #一些说明 """ _i:子生成器,同时也是一个迭代器 _y:子生成器生产的值 ...

  5. 云原生生态周报 Vol. 15 | K8s 安全审计报告发布

    业界要闻 CNCF 公布 Kubernetes 的安全审计报告 报告收集了社区对 Kubernetes.CoreDNS.Envoy.Prometheus 等项目的安全问题反馈,包含从一般弱点到关键漏洞 ...

  6. Prometheus 监控K8S 资源状态对象

    Prometheus 监控K8S 资源状态对象 官方文档:https://github.com/kubernetes/kube-state-metrics kube-state-metrics是一个简 ...

  7. SQL Server备份时间段内插入的数据依旧进入了备份文件?(转载)

    问 MSSql我在本机测试了下.为了延长备份时间,找个大的数据库.开始完整备份bak然后再此库新建表,并增添数据.备份结束.==================还原备份后,在还原的数据库内发现新增的表 ...

  8. Winform中设置和获取DevExpress的RadioGroup的选中项的value值

    场景 Winform中实现读取xml配置文件并动态配置ZedGraph的RadioGroup的选项: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article ...

  9. Python - 字典 - 第十天

    Python 字典 字典是另一种可变容器模型,且可存储任意类型对象. 字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 ,格式 ...

  10. 海关单一窗口程序出现网络/MQ问题后自动修复处理

    单一窗口切换了2年多了,由于RabbitMQ或者网络的不稳定,或者升级或者网络调整,等等诸多问题导致了海关单一窗口程序会不定期的出现文件及回执自动处理的作业停止的问题. 最近终于想明白了,把日志监控起 ...