如何将负分数十进制转换为二进制

问题描述 投票:0回答:4

我想问一下如何将负分数十进制数表示为带符号的二进制数。例如什么是二进制的-0.5。

binary decimal
4个回答
2
投票

首先,您可以将负数视为正数。在单独找到小数和小数部分之后,您可以通过将所有1分别设为0和0到1来将其转换为负数。最后你需要加1。

例如,要先将-5.75转换为二进制,我们需要确定点的位置和二进制数的长度。让我们将数字的长度定义为8位,4位用于小数,4位用于小数部分。

首先找到(正)5.75的二进制表示:

5=0101
0.75=.1100 then
5.75=0101.1100 in 8 bits

要转换为负数,过程是标准的,反转所有位并将1加到最低有效位。

number:        0101.1100
inversion:     1010.0011
addition of 1: 1010.0011 + 0.0001=1010.0100

让我们检查一下你的陈述是否正确:

bin(1010.0100) = -8 + 2 + 0.25 = -5.75

就这样。


1
投票

我希望你觉得这有帮助。

  • 以下涉及将十进制转换为二进制。如果你想使这个为负数,那么只需在完成后添加一个减号。 (例如,将25.5转换为二进制11001.1,所以-25.5是-11001.1)

如果你想处理已签名的二进制文件(不同的东西),那么请转到我链接的源代码并阅读更多相关信息。该来源有一个在线计算器供您使用。

资料来源:http://www.realbinaryconverter.com/index.php

将小数分数转换为二进制分数

使用像436.656625这样的数字并尝试转换为二进制是一个简单的过程。让我们不关心转换整个整数部分(436),因为上面已经介绍过了。我们现在要做的就是转换二进制小数部分(.656625),然后将它与二进制整数部分组合。

Multiply 0.656625 by 2: 0.656625*2=1.31325  
Keep note of that 1 from the whole part 
Remove the 1. Now we have 0.31325 
Repeat step 2: multiply by 2: 0.31325*2=0.6265 
Keep note of that 0 from the whole part 
Multiply by 2: 0.6265*2=1.253 
Keep note of that 1 from the whole part 
Remove the 1. Now we have 0.253 
Multiply by 2: 0.253*2=0.506 
Keep note of that 0 from the whole part 
Multiply by 2: 0.506*2=1.012 
Keep note of that 1 from the whole part 
Remove the 1. Now we have 0.012 

重复以下过程:乘以2并注意得到的整数部分。如果整数部分为1,请记下该整数部分,然后删除该部分并继续此过程。 ...

最后,我们的二进制分数表示为.10101000000110 ...(并继续)。我现在将以更简单的结果进行演示。将0.8125转换为二进制。

0.8125*2=1.625, we get 1
0.625*2=1.25, we get 1
0.25*2=0.5, we get 0
0.5*2=1.0, we get 1

精光!

现在取我们得到的数字,按照我们得到的顺序将它们放在小数点后面。二进制0.8125 = 0.1101。

现在回答你的具体问题

Multiply 0.5 by 2: 0.5*2=1.0 
Keep note of that 1 from the whole part 
Remove the 1. Now we have 0

精光!现在我们取出我们得到的数字,并按照我们得到它们的顺序将它们放在小数点之后。 0.5 = 0.1二进制。

所以二进制中-0.5 = -0.1。您可以在提供的来源处查看此信息。这是工作:


0
投票

就像十进制一样,小数点左边的数字是基数的上升功率,右边的数字是减少功率。

所以124.71是:

10^2   10^1   10^0   10^-1   10^-2
100  + 20   + 4    + 7/10  + 1/100

二进制,它是相同的,除了上升的权力是1, 2, 4, 8, ...而不是1, 10, 100, 1000, ...

减少的力量不是1/10, 1/100, 1/1000, ...而是1/2, 1/4, 1/8, ...

所以-0.5是一个简单的,因为它只包含1/2地方,二进制:

-0.1: - means it will be negative.
      0 x 2^0(1) =     0
      1 x 2^-1(1/2) =  0.5
                      ----
                      -0.5

通过对各个地方求和来建立更复杂的数字。例如,十进制65.625是:

1 x 2^6      =  64
0 x 2^5
0 x 2^4
0 x 2^3
0 x 2^2
0 x 2^1
1 x 2^0(1)   =   1
.
1 x 2^-1     =   0.5
0 x 2^-2
1 x 2^-3     =   0.125
^               ------
|               65.625
|
+-> 1000001.101

0
投票

将负十进制(base-10)数转换为二进制(base-2)是一种相对简单的操作。

我会以-10为例。你应该做的第一件事是用二进制表示正10:01010。下一步是翻转所有位,这意味着将零改为1,反之亦然; 10101.最后一步是将1到10101加1,结果为10110。

© www.soinside.com 2019 - 2024. All rights reserved.