zoukankan      html  css  js  c++  java
  • python二进制转换

    例一、题目描述:

    输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。

    分析:

    python没有unsigned int类型

    >>> print ("%x" % 0xFFFFFFFF)
    ffffffff
    >>> print ("%x" % -10)
    -a
    >>> print ("%x" % -0xFFFFFFFF)
    -ffffffff

    解答:

    【方法一】

    class Solution:
        def NumberOf1(self, n):
            # write code here
            if n==0:
                return 0
            if n<0:
                n=n&0xffffffff                  #这里把负数变成整数
            return bin(n)[2:].count("1")

    【方法二】

     class Solution:
        def NumberOf1(self, n):
            # write code here
            if n==0:
                return 0
            c=0
            if n<0:
                n=n&0xffffffff
            while n:
                n=n&(n-1)               #n & (n - 1)消去n最后一位的1.消了几次就是n中有几个1.
                c+=1
            return c

     例二、题目描述

    写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。

    //step1:异或是查看两个数哪些二进制位只有一个为1,这些是非进位位,可以直接加、减,结果表示非进位位进行加操作后的结果

    //step2:按位与是查看两个数哪些二进制位都为1,这些都是进位位,结果需左移一位,表示进位后的结果

    一直到进位为0

    class Solution:
        def Add(self, num1, num2):
            # write code here
            while num2:
                result = (num1 ^ num2) & 0xffffffff      
                carry = ((num1 & num2) << 1) & 0xffffffff
                num1 = result
                num2 = carry
            if num1 <= 0x7fffffff:            #通过与0x7fffffff比较得到符号位,可以判断num1是正数还是负数,正数则直接返回
                result = num1
            else:
                result = ~(num1^0xffffffff)
            return result

  • 相关阅读:
    Laravel schema构建器列类型
    wkhtmltopdf docker + java(环境搭建及一些坑)
    dockerfile,仓库,私有仓库流程(转载)
    wkhtmltopdf参数详解及精讲使用方法(转载)
    传统前端项目中进行模块化编程并引入使用vue、elementui 前端
    vue3 + vuex4 实践 前端
    elementplus 原生开发 日期国际化语言 前端
    Vite2.0打包elementplus UI报错 前端
    vue3 Vetur报错:has no default export 组件没导出 前端
    windows版的HbuilderX连接iPad真机测试(uniapp)
  • 原文地址:https://www.cnblogs.com/girl1314/p/10456601.html
Copyright © 2011-2022 走看看