二进制减法 - Python

2023-11-23

我想做一个二进制计算器,但减法部分有问题。这是我的代码(我尝试根据我在该网站上找到的代码进行改编)。

    maxlen = max(len(s1), len(s2))

    s1 = s1.zfill(maxlen)
    s2 = s2.zfill(maxlen)

    result  = ''
    carry   = 0

    i = maxlen - 1
    while(i >= 0):
        s = int(s1[i]) - int(s2[i])
        if s <= 0:
            if carry == 0 and s != 0:
                carry = 1
                result = result + "1"
            else:
                result = result + "0"
        else:
            if carry == 1:
                result = result + "0"
                carry = 0   
            else:
                result = result + "1" 
        i = i - 1


    if carry>0:
        result = result + "1"

    return result[::-1]

该程序对于某些二进制减法工作正常,但对于其他二进制减法则失败。 有人可以帮助我,因为我找不到错误吗?多谢。


简短回答:对于以下情况,您的代码是错误的s1[i] == s2[i] and carry == 1.

更长的答案:您应该重组您的代码以具有三种不同的情况s==-1, s==0, and s==1,然后根据值进行分支carry在每种情况下:

if s == -1:  # 0-1
    if carry == 0:
        ...
    else:
        ...
elif s == 0:  # 1-1 or 0-0
    if carry == 0:
        ...
    else:
        ...
else:  # 1-0
    if carry == 0:
         ...
    else:
        ...

这样,您就可以为每种可能性分配一个单独的块,因此不会像您第一次尝试时那样忽略某个案例。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

二进制减法 - Python 的相关文章

随机推荐

  • 单个 SQL Server 语句是否具有原子性和一致性?

    是SQL Server中的一条语句ACID 我的意思是 给定单个 T SQL 语句 未包装在BEGIN TRANSACTION COMMIT TRANSACTION 是该语句的操作 Atomic 要么执行所有数据修改 要么不执行任何数据修改
  • __global__ 函数如何像 C/C++ 那样返回值或中断

    最近我一直在 CUDA 上进行字符串比较工作 我想知道 global 函数在找到我正在寻找的确切字符串时如何返回一个值 我的意思是 我需要包含大量线程的 global 函数来同时在一个大字符串池中查找某个字符串 并且我希望一旦捕获到确切的字
  • 验证 Rails 模型/表中的存在与 null false

    我在玩 Rails admin 时发现了一些东西 模型中定义如下的属性 在 Rails 管理中计为 必需 validates user presence true 但是 如下表 架构 迁移 中定义的属性仍算作 可选 t datetime c
  • 使用 XAML 显示滑块的值

    如何仅在单击时显示滑块的当前值 类似于工具提示 但不在鼠标悬停时 此代码为我提供了鼠标悬停时滑块的值 并显示为双值
  • 具有其他模型值的下拉菜单

    我有属于系列的产品 集合只是一个名字 产品有一个collection id 在我用于创建和编辑产品的 form 视图中 我希望有一个包含所有集合名称的下拉菜单 问题 似乎没有附属于 form for 的选择方法 我正在尝试使用 选择 方法
  • 在这种情况下,扩展原型链如何提高性能?

    我长期以来一直有一个深刻的假设prototype chains导致属性访问器的性能下降 我试图解释这一点隐藏 getter 或添加到 proto 对象中当一个快速我整理的基准结果与我的预期完全相反 这里发生了什么 我是否遗漏了一些明显的东西
  • Grails RemoteFunction 参数语法

    我正在尝试将几个参数传递给 grails 中的 RemoteFunction 但我很难正确格式化它 我想传递页面上的一段数据的值加上我刚刚跳出的文本框的值 所以在我的 onblur 中我有一些类似的内容 onblur remoteFunct
  • 蓝牙和delphi,怎么样?

    我想使用蓝牙将文件发送到设备 手机 没什么花哨的 但我不知道应该从哪里开始寻找司机 也许你们中的一个人以前使用过蓝牙 可以给我一个起点 我在 Indy 中添加了一些蓝牙支持 因为你只能 通过套接字读取 写入蓝牙 使用 Windows 套接字
  • MongoDB:更新一个字段上的每个文档

    我有一个集合名为foo假设地 每个实例foo有一个名为 lastLookedAt 的字段 它是自纪元以来的 UNIX 时间戳 我希望能够通过 MongoDB 客户端并将所有现有文档 大约 20 000 个 的时间戳设置为当前时间戳 处理这个
  • 访问 Django 模板中的 Javascript 变量

    有什么办法可以访问吗javascript变量在Django模板tags 我可以做这样的事情吗 if javascriptvar 0 do this else do this endif 不 Django 模板是在服务器端编译的 然后它被发送
  • 更改数据库/添加文件/变量文件名?

    我想将文件 文件组添加到现有数据库 但我需要从变量获取路径 因为当此脚本完成时它会有所不同 当我在 SQL Management Studio 2008 R2 中检查脚本时 它返回一个错误FILENAME Path 我该如何使用该变量 脚本
  • 如何判断 UILabel 何时被截断和/或其换行位置将发生变化

    我有一个多线UILabel numberOfLines 0 它的宽度可以在运行时改变 有时这会导致截断和 或重新包装 一些例子最好地说明了这一点 示例 1 宽度的减小导致不同的断线点 示例2 宽度减少导致截断 示例 3 宽度的减小导致截断和
  • 缺少节点的 xpath

    我有以下 xml
  • 如何根据方向元数据旋转 JPEG 图像?

    我有一些服务器代码在上传图像时生成缩略图 问题是 当拍摄图像并旋转相机 设备时 缩略图也会旋转 即使全尺寸图像本身在任何图像查看软件中都以正确的方向显示 只有 jpg 才会出现这种情况 使用 OSX 上的预览 我可以看到 jpg 中嵌入了方
  • 我可以将 Flex 组件属性绑定到函数吗?

    我想设置enabled按钮上的属性基于具有一个或多个参数的函数的返回值 我怎样才能做到这一点 private function isUserAllowed userName Boolean Boolean if userName Tom r
  • 使用 Graph API 将图像从 .NET 发布到 Facebook 墙

    我正在使用 Facebook 的 Javascript API 开发一个应用程序 该应用程序需要能够将图像发布到用户墙上 据我所知 应用程序的这一部分需要位于服务器端 因为它需要将图像数据发布为 多部分 表单数据 注意 这不是简单的 pos
  • java.lang.NoSuchMethodException:类“class java.lang.String”上的未知属性“”

    我想将对象列表传递给 jasper 报告中的列表组件 我正在使用 list1 的数据源表达式是新的net sf jasperreports engine data JRBeanCollectionDataSource参数类是java uti
  • Glassfish 服务器适配器未显示在 Eclipse 的列表中

    我成功安装了 Glassfish Tools for Kepler 但是 除了 Apache Basic JBoss 和 ObjectWeb 之外 我在服务器向导中没有看到 GlassFish 的条目 File gt New gt Othe
  • 如何在 NumPy 中将 CSV 数据读入记录数组?

    有没有直接的方法将CSV文件的内容导入到记录数组中 就像R的方式一样read table read delim and read csv 将数据导入 R 数据框 或者我应该使用csv reader 然后申请numpy core record
  • 二进制减法 - Python

    我想做一个二进制计算器 但减法部分有问题 这是我的代码 我尝试根据我在该网站上找到的代码进行改编 maxlen max len s1 len s2 s1 s1 zfill maxlen s2 s2 zfill maxlen result c