7-19 二进制的前导的零(python) 【负数的存储原理,首位为一 bin()直接转为二进制数】

没考虑到负数的情况

import sys
n=int(input())
count=0
if n==0:
    print(32)
    sys.exit()
while n>0:
    n_remain=n%2
    n//=2
    count+=1
if n_remain==0:
    print(31-count)
else:
    print(32-count)

天呐写了半天又是研究补码反码的才发现,符号位在最高位,所以负数32位存储前导0的个数为零,但也有收获,改进了转换成二进制的代码,c的思维写多了程序真的会忽略python内置函数从而使程序复杂化了啊

知识点:

利用内置bin()函数转换为二进制数,(被转换数不变,本质是生成一个新的)

整数切片返回序列,可以直接遍历,也可转换成list列表后遍历

import sys
n=int(input())
count,flag=0,False
if n==0:    #0特殊考虑
    print(32)
    sys.exit()
if n<0:    #负数
    print(0)
    sys.exit()
n_er=bin(n)
n_er2=n_er[2:]    #去除前面的0b
count=0
for i in n_er2:
    count+=1
print(32-count)

  • 8
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值