题目

题目来源于计蒜客输出二进制补码

题目描述

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

输入格式

一个整型整数。

输出格式

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

样例输入

7

样例输出

00000000000000000000000000000111

解题

思路分析

要想解这道题,首先要明白三个概念 原码反码补码

  • 原码: 原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值. 比如如果是8位二进制:

[+1]原=00000001[+1]_原 = 0000 0001[+1]原​=00000001

[−1]原=10000001[-1]_原 = 1000 0001[−1]原​=10000001

  • 反码: 正数的反码是其本身;负数的反码是在其原码的基础上, 符号位不变,其余各个位取反。

[+1]=[00000001]原=[00000001]反[+1] = [00000001]_原 = [00000001]_反[+1]=[00000001]原​=[00000001]反​

[−1]=[10000001]原=[11111110]反[-1] = [10000001]_原 = [11111110]_反[−1]=[10000001]原​=[11111110]反​

  • 补码: 正数的补码是其本身;负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后 +1+1+1 。 (即在反码的基础上 +1+1+1 )

[+1]=[00000001]原=[00000001]反=[00000001]补[+1] = [00000001]_原 = [00000001]_反 = [00000001]_补[+1]=[00000001]原​=[00000001]反​=[00000001]补​

[−1]=[10000001]原=[11111110]反=[11111111]补[-1] = [10000001]_原 = [11111110]_反 = [11111111]_补[−1]=[10000001]原​=[11111110]反​=[11111111]补​

了解了这三个概念之后,就容易分析做题了:

  1. 求补码需要分两个情况

    • 正数:正数相对比较简单,因为正数的补码就是他二进制本身,前边补够相应的0就行了;
    • 负数相对复杂:因为负数需要求反码,在其反码的基础上+1。
  2. 着重说一下负数
    • 因为负数的反码第一位是 111 ,其余补 000 ,再求补码, 111 不变,其余 111 变 000 ,000 变 111 ;在这个基础上,可以把负数的第一位也补成 000 ,这样直接求反,就可以忽略符号位的判断
    • 求得反码后,在反码的基础上 +1+1+1 即是补码。这里提供两种方法
ans = bin(int(''.join(fm), 2) + 1) # 转换为10进制+1,再转换回2进制
# 补码的另一种求法:# 求反后末尾所有1变0,遇到的第一个0变1,结束(等同于求反+1,手动进位)
fm = fm[::-1]
for i in range(32):if fm[i] == '1':fm[i] = "0"else:fm[i] = "1"break
fm = fm[::-1]

完整代码

n = bin(int(input()))
if n[0] != '-':  # 正数print((32 - len(n[2:])) * '0' + n[2:])  # bin()返回的结果为0bxxx,所以要去除0b
else:  # 负数fm = list((32 - len(n[3:])) * '0' + n[3:])  # 负数前边有符号,所以字符串截取应多一位s = (''.join(fm)).replace('0', '2').replace('1', '0').replace('2', '1')  # 1变0,0变1,2是中间变量ans = bin(int(s, 2) + 1)print(ans[2:])

计算二进制补码 计蒜客 Python相关推荐

  1. 计蒜客python答案Top50

    新手小白入门刷题学习,前50道题目,巩固基础,有些题目的解答并不是最简单而又高效,纯属暴力破解,希望各位大佬多多指教! 计蒜客官网: https://www.jisuanke.com T1001 计算 ...

  2. 计蒜客python刷题笔记

    1.计算A+B A,B= map(int, input().split()) C=int(A+B) print(C) 这里面输入必须同时输入两个数.用空格隔开,所以用到了map函数,第一个参数控制格式 ...

  3. 计蒜客 Python练习

    本文为了记录 学习Python3 所写  写的都是 语法训练题  记录自己学习的过程 题目是让你求一个斐波那契数列的第n项  然后我用了一个函数来计算这个东西 1:没有分号 2:各种段开头需要冒号 3 ...

  4. 最好的草 计蒜客 Python

    题目 题目描述 奶牛 BessieBessieBessie 计划好好享受柔软的春季新草.新草分布在 RRR 行 CCC 列的牧场里.它想计算一下牧场中的草丛数量. 在牧场地图中,每个草丛要么是单个#, ...

  5. 区间内的真素数 计蒜客 Python

    题目 题目描述 蒜头君请你帮忙找出正整数 MMM 和 NNN 之间(NNN 不小于 MMM)的所有真素数. 真素数的定义:如果一个正整数 PPP 为素数,且其反序也为素数,那么 PPP 就为真素数. ...

  6. h0152. 故事计算题(计蒜客——西邮K题)解析

    小米给小宝讲了一个小故事.从前有座山,山上有N个庙,每个庙里有1个老和尚和N+1个小和尚.山中流传着一个故事:从前有座山,山上有N+1个庙,每个庙里有1个老和尚和N+2个小和尚.山中流传着一个故事:从 ...

  7. 在线计算机 授课,在线计算机教育网站计蒜客改版 推出算法竞赛课程

    [赛迪网讯]4月16日消息,近日,新型在线计算教育平台计蒜客进行了重大改版,网站从底层架构到课程内容都进行了大幅调整.计蒜客新版除了服务速度和稳定性大幅提升外,还对用户的学习体验进行了优化:同时,计蒜 ...

  8. 计蒜客 - T1029 计算2的幂

    计蒜客 - T1029 计算2的幂 题目 蒜术师为你准备了一道最简单的与幂运算的题目: 给定非负整数 n,求 2的n次方. 输入格式 一个整数 0≤n<31. 输出格式 一个整数,即 2的n次方 ...

  9. 计蒜客难题题库之一 泥塑课 python解答

    计蒜客挑战难题之一 泥塑课 python解答 题目: 小米是一个幼儿园老师,每学期的泥塑课上,她都会给每个学生发不超过250立方厘米的等量橡皮泥,教大家做泥塑.在上课过程中,她发现每个班都恰好有一个小 ...

最新文章

  1. 看懂了这套书,你就看懂了程序的灵魂。
  2. 如果MySQL的自增 ID 用完了,怎么办?
  3. Python 途虎养车全系车型轮毂--参数分析与实现
  4. C++实现glut绘制点、直线、多边形、圆
  5. redis之(十一)redis实现缓存的功能
  6. [转]总结:Apache/Tomcat/JBOSS/Jetty/Nginx区别 .
  7. 知识管理在客户关系管理中的应用领域
  8. 自学it18大数据笔记-第二阶段hadoop-day11——会持续更新……
  9. STM32 USB数据接收与数据发送程序流程分析
  10. Mac 查找本机的ip
  11. CA证书服务器(6) 利用CA证书配置安全Web站点
  12. TensorFlow进阶:CNN对CIFAR10图像分类
  13. 码龄10年工作6年的搬砖小哥,最常访问的学习网站都在这里了
  14. 面对众多客户/用户需求,每个都紧急,怎么排期?
  15. c++ PDFium pdf转为图片(实例)
  16. 介绍identity matrices
  17. 2018-8-29-win2d-渐变颜色
  18. 第一章 计算机基础知识【信息学奥赛】
  19. Python - Requests库下载图片
  20. 统一了Excel和Python的神级编辑器GridStudio,安装起来确实不简单

热门文章

  1. 通过dsp设备实现录音与放音编程实例
  2. mysql表锁机制详解
  3. uni-app引入阿里巴巴矢量库(iconfont)图标
  4. 计算机组成原理---高速缓冲存储器
  5. Excel-VBA基础语法(VBA简介、数据类型、变量、数组、运算符、内置函数、过程与函数)
  6. @Excel导出实现动态控制导出列
  7. Spring Cloud Alibaba实现服务的无损下线功能
  8. python控制大疆无人机_如何从djitello无人机和python中的UDP服务器收集视频数据?...
  9. python运行pyc文件_Python pyc文件
  10. 学生成绩管理系统C语言课程设计