问题标签 [twos-complement]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2275 浏览

twos-complement - 使用加法、减法和左移翻转二进制补码数的符号

在一项家庭作业中,其中一个问题要求我们将任意整数乘以一个常数,仅使用 +、- 和 << 运算符以及最多三个操作。例如,第一个常数是 17,我将其求解为

但是,给出的一些常数是负数(例如 -7)。乘以 7 是一件相对微不足道的事情(我将其设为(x << 3) - x),但我无法弄清楚如何仅使用三个允许的运算符来翻转标志。

我试图通过在每个结果中添加或减去 2147483648 来翻转该位(认为这将强制使用最高有效位,从而翻转符号),但在我的 C# 测试实现中,这已被证明是不成功的。

是否有一些正数可以乘以在功能上类似于-7的给定int?添加 2147483648 可以在 C# 以外的语言中使用吗?我忽略了什么吗?

书中的原始问题如下:

假设我们的任务是生成代码以将整数变量 x 乘以各种不同的常数因子 K。为了提高效率,我们只想使用操作 +、- 和 <<。对于以下 K 值,编写 C 表达式以执行乘法运算,每个表达式最多使用三个操作。

A.K = 17

B. K = -7

C.K = 60

D.K = -112

0 投票
1 回答
224 浏览

binary - 找出 4 位的位模式#

一个。填写以下 4 位数字的位模式。如果一个数字有多个位模式,请将它们全部写入。如果不存在位模式,请在框中填写“N/A”。

无符号、符号/大小、一个补码、二进制补码

对于 0,7,-1, 15 和 8。

我找出了 0、-1 和 15 的值。

我需要 7 和 8 的帮助。

0 投票
4 回答
1309 浏览

binary - 二进制补码解释

二进制补码如何工作?例如:

如何判断后者应该是 251 还是 -5?

0 投票
2 回答
17225 浏览

c - 仅使用位运算符以二进制执行算术运算

可能重复:
如何仅使用位移和加法进行乘法和除法?

我必须编写函数来执行二进制减法、乘法和除法,而不使用除循环控制之外的任何算术运算符。我以前只用 Java 编写过代码,所以我很难理解这一点。

从减法开始,我需要用原型写一个函数

我知道我需要将 y 转换为二进制补码才能使其为负并将其添加到 x,但我只知道如何通过使用补码 ~ 运算符并加 1 来做到这一点,但我不能使用 + 运算符。

提供了 badd 函数,如果我能弄清楚如何使 ya 为负数,我将能够在 bsub 中实现它。badd 的代码如下所示。提前感谢您的任何提示。

0 投票
3 回答
10800 浏览

binary - 2 对使用逻辑门的有符号二进制转换器的补码?

我需要使用门电路为有符号二进制转换器创建一个 2 的补码。我可以使用哪些逻辑门?

0 投票
7 回答
257 浏览

c - 如果 b=5,为什么 ~b=-6?

我无法让 2-complement 计算工作。

我知道 C 编译 ~b 如果 b = 5,它会将所有位反转为 -6。但为什么?

int b=101,将所有位取反为 010,然后对于 2 个补码的符号,我只需添加 1,但它变为 011,即 3,这是错误的答案。

我应该如何用位反转运算符计算〜?

0 投票
3 回答
14156 浏览

c# - 计算十六进制字符串的补码校验和

我有一个字符串“0AAE0000463130004144430000”,我需要计算构成该字符串的十六进制字节的二进制补码校验和。

上面示例字符串的公式是

  1. 将值相加:0A + AE + 00 + 00 + 46 + 31 + 30 + 00 + 41 + 44 + 43 + 00 + 00 = 27(丢弃溢出)
  2. 从 0x100 = 0xD9 中减去结果

D9 是此示例的正确校验和,但我无法从 C# 中的字符串中解析出两位十六进制值。我当前的代码如下:

但是,据我所知,这是对 ASCII 值求和,并对每个单独的字符进行求和。

0 投票
1 回答
16087 浏览

signed - 从 8 位转换为 16 位

我想知道如何将 8 位 2 的补码转换为 16 位 2 的补码有符号数?

1100 0110 是一个例子

0 投票
3 回答
2155 浏览

java - 在两个恭维中理解十六进制数到十进制 - Java

我试图在这里理解这个答案。

这些0xf20xfffffff2值如何表示-14?你能详细说明一下转换过程吗?

不过,我知道什么是二的补码。

0 投票
2 回答
4368 浏览

java - 在Java中将2的补码字节转换为无符号正值

我在 Java 中有一个 8 位字节数组。字节数组由它从外部传感器接收的 16 位数字的高字节和低字节组成。

例如,字节数组可能如下:

在上面的字节数组中,每个偶数索引是 16 位数字的高字节,每个奇数索引是低字节。

我遇到的问题是当数字大于 127 时,导致数字的 2 的补码表示占上风。我真正想做的是保持正数无符号数。因此我不关心 2 的补码。这是我试图做的没有成功的事情。

我试图转换为短以使 8 位数字无符号,但似乎 java 截断了前导 0 的广告将其视为 8 位并保留负号。有谁知道也许更好的方法?

## 编辑:我不知道这是否重要,但值得一提的是,这是一个在 Android 上运行的应用程序。##

干杯,