计蒜客T1182 输出二进制补码(python3.6)
题目描述
题目链接: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自带取反码操作,但是并非我们想象中的直接按照位数取反
如上图所示,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)+1ans=bin(int_b)[2:]print(ans)
else:print("0"*32)
计蒜客T1182 输出二进制补码(python3.6)相关推荐
- 计蒜客T1004输出Hello, World
对于大部分编程语言来说,编写一个能够输出 "Hello, World!" 的程序往往是最基本.最简单的. 因此,这个程序常常作为一个初学者接触一门新的编程语言所写的第一个程序,也经 ...
- 计蒜客T1005输出字符三角形
为了能够更清晰整齐地看到输出结果,我们可以去控制输出的格式. 读入三个整数,按每个整数占 88 个字符的宽度,右对齐输出它们. 输入格式 只有一行,包含三个int范围内的整数,整数之间以一个空格分开. ...
- 计蒜客T1003输出字符菱形
小蒜蒜最近学习了菱形(四边都相等的四边形). 现在她给了你一个字符,希望你能用它构造一个对角线长 55 个字符,倾斜放置的菱形. 输入格式 输入只有一行,包含一个字符. 输出格式 该字符构成的菱形. ...
- 计算二进制补码 计蒜客 Python
题目 题目来源于计蒜客输出二进制补码 题目描述 蒜头君有一个 int 的整数,输出它的 32 位二进制补码. 输入格式 一个整型整数. 输出格式 输出一行,即该整数的补码表示. 样例输入 7 样例输出 ...
- 计蒜客 挑战难题 爬楼梯
计蒜客 挑战难题 爬楼梯 假设你现在正在爬楼梯,楼梯有n级.每次你只能爬1级或者2级,那么你有多少种方法爬到楼梯的顶部? 格式: 第一行输入一个数n(n<=50),代表楼梯的级数. 接下来一行输 ...
- 无脑博士的试管们java_计蒜客 无脑博士和他的试管们
标签: 无脑博士有三个容量分别是A,B,C升的试管,A,B,C分别是三个从1到20的整数,最初,A和B试管都是空的,而C试管是装满硫酸铜溶液的.有时,无脑博士把硫酸铜溶液从一个试管倒到另一个试管中,直 ...
- 最短路(遍历边)计蒜客—DD坐地铁
题目: C 城有 n 个站点, m 条双向地铁,每条地铁有一个 companyicompany_icompanyi表示它的公司,如果连续乘坐同一家公司的地铁只要花 1元钱就好.DD现在想出门找萨摩耶 ...
- H - Prince and Princess 计蒜客 - 42402
H - Prince and Princess 计蒜客 - 42402 题意: 你现在要寻找公主,有三种人,第一种是说真话的人(至少为1,因为公主是说真话的人),第二种人是只会说假话的,第三种是胡说八 ...
- 计蒜客 - T1012 A*B问题
计蒜客 - T1012 A*B问题 相信你已经学会 A+B 问题了,那么问题又来了- 输入两个正整数 A 和 B ,求 A×B. 输入格式 一行,包含两个正整数 A 和 B,中间用单个空格隔开. 1≤ ...
最新文章
- wp 删除独立存储空间文件(多级非空文件夹删除)
- c#小软件(SaveClassic)开发手记--(1)前言
- 微信小程序知识点梳理
- android jni 调用java_Android JNI开发系列(九)JNI调用Java的静态方法实例方法
- mysql接口可以重载吗_php 到底可不可以重载
- pupload 文件分块 php,基于Plupload实现Base64分割的文件上传方案
- 南大cssci期刊目录_最新版CSSCI管理学和经济学来源期刊目录(20192020)及增减变化!【南大核心】...
- macsfancontrol 设置方法_重庆市材料好的消防应急筒灯使用方法
- 敏捷图书排行 (2011年修订)【转】
- VMware Horizon View 的内部版本号和版本 (2143853) -2020-10-27更新
- 跟着老板创业3年,团队从4人到40多人
- win10磁盘管理界面各系统分区介绍
- 2个比较经典的PHP加密解密函数分享
- 流畅的python 18章
- 毕业设计 基于单片机的智能蓝牙密码锁设计与实现
- MySQL事务四大特性以及如何保证
- Android device owner简述
- android上的壁纸软件,那些简约、精美、极致的安卓软件(APP) 篇四:这7个APP,满足你对壁纸所有的向往...
- 浙江大学2020计算机考研复试线,浙江大学2020考研复试分数线已公布
- 【数据库系统】空值的处理