- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
当我给出例如:-2 或 -8 时,我得到 110, 11000。但我想得到 10, 1000,因为它必须使用最小二进制数。所以我必须用另一种方式来应对消极的情况。我尝试交换 1 和 0 直到达到 LSB 1,但找不到方法。
(为您提供帮助:dekadikos = demical、diadikos = 二进制、boith = 助手)
dekadikos = input()
while dekadikos != "end" :
dekadikos = int(dekadikos)
if dekadikos > 0 :
diadikos = bin(dekadikos)
diadikos = (diadikos[2:])
n = int(len(diadikos)) + 1
print(diadikos.zfill(n))
elif dekadikos == 0 :
diadikos = bin(dekadikos)
diadikos = (diadikos[2:])
print(diadikos)
else :
dekadikos = abs(dekadikos)
diadikos = bin(dekadikos)
diadikos = (diadikos[2:])
n = int(len(diadikos)) + 1
diadikos = diadikos.zfill(n)
boithdekadikos = 2**n - dekadikos
diadikos = bin(boithdekadikos)
diadikos = diadikos[2:]
print (diadikos)
dekadikos = input()
最佳答案
您可以通过对最后一个 else
block 的代码进行两处更改(已注释)来解决此问题:
else :
dekadikos = abs(dekadikos)
diadikos = bin(dekadikos-1) # subtract 1
diadikos = (diadikos[2:])
n = int(len(diadikos)) + (dekadikos>1) # add 1 except for 1
diadikos = diadikos.zfill(n)
boithdekadikos = 2**n - dekadikos
diadikos = bin(boithdekadikos)
diadikos = diadikos[2:]
print (diadikos)
不过,要达到您想要的结果,这似乎是一个漫长的方法。例如,您可以使用 format(dekadikos, 'b')
获取不带 0b
前缀的数字的二进制表示形式。
您可以这样做,它涵盖正数、零和负数:
dekadikos = int(dekadikos)
diadikos = '0' + format(abs(dekadikos)-(dekadikos<0), 'b')
if dekadikos == 0:
diadikos = '0'
elif dekadikos < 0:
diadikos = format(2**(len(diadikos)-(dekadikos==-1)) + dekadikos, 'b')
print (diadikos)
关于python - 十进制到二进制 : two's complement, 更好的负数表达,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40392233/
后一种表示看起来更容易理解。为什么大多数语言都选择前一种?我想 Two's complement 中一定有一些独特的优势特征,使数据操作更容易。 最佳答案 语言不指定数字格式;硬件确实如此。询问 In
我正在阅读有关二进制补码的内容,我知道这种方法最有效,但也可能存在一些缺点。我找不到任何缺点,是否存在转换为二进制补码无法正确表示数字的情况? 最佳答案 二进制补码很棒 - 这就是每个人都使用它的原因
形成二进制数的二进制补码的一种快捷方法是从右边复制位,直到复制了一位,然后对剩余的位进行补码(反转)。 这在 SO here 上有解释以及 Wikipedia . 没有解释的是为什么这个快捷方式有效,
所以我想代表数字-12.5。因此12.5等于: 001100.100 如果我不计算分数,那么它很简单,-12是: 110100 但是-12.5是多少?是110100.100吗?如何计算此负分数? 最佳
我对如何进行从一个补码到二进制补码的转换感到困惑。假设我们有 10101101 的补码。如何将其转换为二进制补码? 谢谢 最佳答案 只看定义: One's complement 表示取反值中的位是原值
在二进制数系统中表示负数时,2 的补码相对于 1 的补码有什么优势?它如何影响二进制系统中数字的特定位表示形式存储的值的范围? 最佳答案 二进制补码相对于二进制补码的主要优点是二进制补码只有一个零
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 7 年前。 Improve this ques
我的代码是一个将十进制转换为二进制的类。它将显示二进制、一个的补码和两个的补码。到目前为止,我已经弄清楚了补码,但在找到补码的解决方案时遇到了问题。我的计划是使用一个补码的输出作为二进制补码方法的输入
我有一些功能,大型分析软件的一部分,需要 bool 掩码将数组项分成两组。这些函数是这样的: def process(data, a_mask): b_mask = -a_mask r
当我给出例如:-2 或 -8 时,我得到 110, 11000。但我想得到 10, 1000,因为它必须使用最小二进制数。所以我必须用另一种方式来应对消极的情况。我尝试交换 1 和 0 直到达到 LS
我找不到办法做到这一点... raw_string a a [1] "\"+001\", M. http://goo.gl/3EXxy6 via @MYTF1News" 最佳答案 我也会使用循环:
我查看了 ISA 规范并在互联网上搜索了此问题的答案,但我找不到。 在 RISC-V ISA 中,负数应该用一个补码还是二进制补码表示?或者,这个决定是否留给实现者? 我问的原因是我正在编写一个 RV
假设2的补码表示的5位数字可以表示的最大值和最小值是多少? 我是否找到了 5 位数字的最小值和最大值,它们是 00000,但我不确定最大值是多少。然后转换为二进制补码?这听起来很愚蠢,但这是我唯一能想
我了解ramda的complement函数的使用,该函数会反转谓词的返回。我无法理解的是为什么使用“complement” 作为名称。 const invertPredicate = R.comple
目前我可以从这样的表中获取不同的条目: SELECT DISTINCT ON (abc.entry) abc.* FROM table abc JOIN table1 def ON abc.e
-1可以4位二进制表示为(2的补码)1111 15也表示为1111。 那么,CPU从内存中获取值时如何区分15和-1? 最佳答案 当一个字节从一个位置移到另一个位置时,CPU并不关心该字节是保留-1还
我有 3 种补充给定二进制数的方法。第一种和第三种方法不会出现任何整数溢出错误。你能解释一下为什么第二种方法会出现这个运行时错误吗? 这是代码: int findComplement1(int nu
我已经包含了我遇到逻辑问题的程序。该程序基于 booth 的算法,我已经放了一个片段。在这个“工作”代码片段中,用户在数组 (a[0]=1 LSB) 的帮助下接受十进制数转换为十进制形式,最后计算数组
这是一个非常幼稚的问题(我知道),但我认为这将是一个很好的起点,可以考虑如何实际执行 CPU 的基本指令集: 在二进制补码系统中,您不能反转您的实现可以表示的最大负数的符号。理论上的原因很明显,最大负
我正在开始 Python 编程。我正在阅读基本教程,但这一点对我来说不是很清楚。如果您能给我任何帮助,我将不胜感激。 最佳答案 ~3 表示“反转”3。使用 two's complement在自然数数据
我是一名优秀的程序员,十分优秀!