我怎样才能得到二进制数的2s补码

时间:2017-05-10 13:31:25

标签: excel binary

我在excel中有这个例子时有一个问题。

例如,您的号码为 11101010 。如何进行此二进制数的 2s补码。我需要在excel上使用哪些功能?

我得到的2s补码:

  1. 将1转换为0,将0转换为1 = 00010101
  2. 为它添加1 =结果= 00010110
  3. 但是如何在excel中解决这个问题:/

    请求帮助。

4 个答案:

答案 0 :(得分:1)

Scott Craner的答案很不错,因为它实现了OP使用字符串操作的初衷。但是,我觉得一个更好的主意是通过减十进制数来计算2的补数。

使用BIN2DEC('Binary String')或仅使用您可能在某些时候已转换为二进制的原始十进制数字。

然后,如果您要计算数字的8位2的补数,则可以使用2^8POW(2, 8) - BIN2DEC('Binary String')中减去数字

然后使用DEC2BIN()

将其转换回二进制

使用反相位模式并由OP发布的1加2的补码的定义只是这个更基本的definition of 2's complement的结果。该页面的作者在页面底部附近讨论了这个定义。

答案 1 :(得分:1)

Two的补码,它的基本形式是它的十进制表示法的负数。

this答案

非常相似

如果A2具有二进制数,则B2:

=RIGHT(DEC2BIN(-BIN2DEC(A2)),LEN(A2))

注意事项:

  • 二进制数不能超过10位或以第一位为符号位的字符。

答案 2 :(得分:0)

此公式遵循您的步骤:

=TEXT(DEC2BIN(BIN2DEC(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,1,2),0,1),2,0))+1),REPT("0",LEN(A1)))

https://www.tinymce.com/docs/get-started/spell-checking/#tinymcespellcheckerproplugin

答案 3 :(得分:0)

请记住,二进制补码是为了在计算机中表示负数而进行减法的方式发明的,因此可以通过简单的减法来解决此问题,因此先求出补数再加一个即可。

= DEC2BIN(255-BIN2DEC(A1)+1)

其中A1是具有二进制数字作为文本的单元格。如果要使用更大的数字,则使用可以由您要使用的位数表示的最大数字,这里我的示例是8位,因此(2 ^ 8)-1 = 255