热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

计蒜客T1182输出二进制补码(python3.6)

题目描述题目链接:https:nanti.jisuanke.comtT1182蒜头君有一个int的整数,输出它的32位二进制补码。输入格式一个整型整数。输出格式输出一行,即该整数的
题目描述

题目链接:https://nanti.jisuanke.com/t/T1182

蒜头君有一个 int 的整数,输出它的 32 位二进制补码。

输入格式
一个整型整数。

输出格式
输出一行,即该整数的补码表示。

输出时每行末尾的多余空格,不影响答案正确性

样例输入

7

样例输出

00000000000000000000000000000111
解题思路

首先弄清楚原码、反码、补码的概念:
以8位二进制码为例:
原码:
9的二进制:0000 1001
-9的二进制:1000 1001
反码:
正数反码即本身
负数反码将除了最高位的符号位不变以外,其余位数全部取反
+9 为 0000 1001
-9 为 1111 0110
补码:
正数的补码即本身
负数的补码在反码的基础上+1、
+9 为 0000 1001
-9 为 1111 0111

本题目有两个坑点:
1、对于python来讲,int型的负数采用bin函数以后,得出的并非真正的二进制负数,而是该负数对应正数的前面加了个负号,如下所示:

num1=9
num1_b=bin(num1)
num2=-9
num2_b=bin(num2)
print(num1_b)
print(num2_b)
#输出:
0b1001
-0b1001

2、虽然python自带取反码操作,但是并非我们想象中的直接按照位数取反
《计蒜客T1182 输出二进制补码(python3.6)》
如上图所示,3取反为-4,-4取反为3,python的取反操作实际是对原数+1再取相反数。原理如下:

1.对3取反:(取4位二进制)
①化为二进制:
3→0011
②对二进制结果取反:
0011→1100
③对结果先取反再加1:
1100→(~1100+1)→0011+1→0100
④对符号取反并化为十进制:
-0100→-4
2.对-4取反:
①化为二进制:
4→0100
②对二进制结果取反:
0100→1011
③对结果先加1再取反:
1011→~(1011+1)→ ~1100→0011
④对符号取反并化为十进制:
+0011→3

因此,对于本题目,要首先解决这两个大坑:
对于第一个大坑,直接采用分治法,分三种情况进行计算
对于第二个大坑,采用手动取反的方式,即list(map(lambda x: (int(x) + 1) % 2, b))
最后注意一下细节,比如32位要都有且符合格式,还有边界情况,就ok啦~

python代码

n=int(input())
if n >0:
b=bin(n)[2:]
list_b = [0] * (32 - len(b))
list_b=list_b+list(map(int,b))
str_b="".join('%d'%i for i in list_b)
print(str_b)
elif n<0:
b=bin(n)[3:]
list_b=[1]*(32-len(b))
list_b=list_b+list(map(lambda x: (int(x) + 1) % 2, b))
str_b = "".join('%d' % i for i in list_b)
int_b=int(str_b,base=2)+1
ans=bin(int_b)[2:]
print(ans)
else:
print("0"*32)

推荐阅读
  • 本文介绍了在Python3中如何使用选择文件对话框的格式打开和保存图片的方法。通过使用tkinter库中的filedialog模块的asksaveasfilename和askopenfilename函数,可以方便地选择要打开或保存的图片文件,并进行相关操作。具体的代码示例和操作步骤也被提供。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 这篇文章主要介绍了Python拼接字符串的七种方式,包括使用%、format()、join()、f-string等方法。每种方法都有其特点和限制,通过本文的介绍可以帮助读者更好地理解和运用字符串拼接的技巧。 ... [详细]
  • 模板引擎StringTemplate的使用方法和特点
    本文介绍了模板引擎StringTemplate的使用方法和特点,包括强制Model和View的分离、Lazy-Evaluation、Recursive enable等。同时,还介绍了StringTemplate语法中的属性和普通字符的使用方法,并提供了向模板填充属性的示例代码。 ... [详细]
  • 超级简单加解密工具的方案和功能
    本文介绍了一个超级简单的加解密工具的方案和功能。该工具可以读取文件头,并根据特定长度进行加密,加密后将加密部分写入源文件。同时,该工具也支持解密操作。加密和解密过程是可逆的。本文还提到了一些相关的功能和使用方法,并给出了Python代码示例。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 本文介绍了PhysioNet网站提供的生理信号处理工具箱WFDB Toolbox for Matlab的安装和使用方法。通过下载并添加到Matlab路径中或直接在Matlab中输入相关内容,即可完成安装。该工具箱提供了一系列函数,可以方便地处理生理信号数据。详细的安装和使用方法可以参考本文内容。 ... [详细]
  • Java String与StringBuffer的区别及其应用场景
    本文主要介绍了Java中String和StringBuffer的区别,String是不可变的,而StringBuffer是可变的。StringBuffer在进行字符串处理时不生成新的对象,内存使用上要优于String类。因此,在需要频繁对字符串进行修改的情况下,使用StringBuffer更加适合。同时,文章还介绍了String和StringBuffer的应用场景。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • 本文介绍了蓝桥训练中的闰年判断问题,并提供了使用Python代码进行判断的方法。根据给定的年份,判断是否为闰年的条件是:年份是4的倍数且不是100的倍数,或者是400的倍数。根据输入的年份,输出结果为yes或no。本文提供了相应的Python代码实现。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • PDO MySQL
    PDOMySQL如果文章有成千上万篇,该怎样保存?数据保存有多种方式,比如单机文件、单机数据库(SQLite)、网络数据库(MySQL、MariaDB)等等。根据项目来选择,做We ... [详细]
author-avatar
手机用户2502935633
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有