问题标签 [signed-integer]

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 投票
4 回答
185 浏览

c - 没有得到整数溢出

假设我想打印一些值。我假设如果我的有符号变量超过 from TMinand TMax(在这种情况下,使用 4 字节 int,0x7FFFFFFFasTmax0x80000000as Tmin),我应该得到整数溢出,但在这些示例中,我没有得到我期望的结果(在评论中解释):

0 投票
1 回答
394 浏览

c++ - 在有符号和无符号零之间排序c ++

我必须能够为我在大学使用 C++ 做的作业排序负零和零,有人能告诉我为什么下面的代码会产生负零吗?我被卡住了,我不确定为什么会这样......

如果在对上述向量进行排序时有更好的方法产生负零,请告知。非常感谢!

0 投票
2 回答
1351 浏览

c - 如何使用 gcc 编译器 tricore v3.4.6 在 C 中打印 sint32?

我正在使用 tricore v3.4.6 编译器。

假设我有一个有符号整数sint32 a = -1 ,想用printf.

例如,我尝试printf("Signed number %i", a)了以及printf("Signed number %d", a)which 都给了我编译器警告

警告:int 格式,sint32 arg

0 投票
2 回答
760 浏览

swift - 为什么负数的计算中包含“符号位”?

我是 Swift 新手,正在尝试学习“有符号整数的移动行为”的概念。我从“快速编程语言 2.1”中看到了这个例子。

我的问题是:为什么计算中也包含符号位?

我经历了几种数字组合,它们都有效,但我似乎没有找到原因,包括计算中的符号位。

要将 -1 添加到 -4,只需执行所有八位(包括符号位)的标准二进制加法,并在完成后丢弃任何不适合八位的内容:

在此处输入图像描述

0 投票
1 回答
1893 浏览

java - Java 中的 24 位到 32 位转换

我对一个名为OpenBCI的新 IoT 项目感兴趣,它基本上是一个开源 EEG,用于读取和处理脑电波和其他生物数据。在他们的文档中,他们声称无线传输的数据(通过 RFDuino)发送 24 位数据。要将 24 位值转换为 32 位有符号整数,他们建议使用以下 Java 友好的处理代码:

我想我正试图准确地了解这里发生了什么。让我们看一下第一段代码:

  • 为什么假设输入中有 3 个字节是安全的?
  • 价值的意义0xFF何在?
  • 左移 ( <<) 的目的是什么?

第二段也有点神秘:

  • 为什么newInt & 0x00800000?有什么意义0x00800000
  • 为什么if-else基于上述操作的正负结果?
  • 0xFF000000和的意义是0x00FFFFFF什么?

我想我想更好地理解这个功能有很多挥手和魔法!

0 投票
1 回答
557 浏览

binary - 添加到无符号和有符号二进制整数

我想知道是否有人可以向我解释当我们添加二进制数时会发生什么。

假设我们有 4 位,0b1111,我们将 1 加到 0b1111。我认为二进制编码应该是0b10000;但是,由于只有 4 位,因此这些位将变为 0b0000。

我想知道为什么会发生这种情况,是因为没有足够的空间吗?如果 0b1111 是有符号整数,我们如何将 1 加到它上面?

0 投票
1 回答
280 浏览

c - 在对有符号整数进行 XOR 位取消时如何避免陷阱表示?

作为给定三个数字的建议解决方案,找到其中第二大的数字,我写道:

这个想法是^ smallest ^ largest取消位,以便保留中间数字。

但是,@chux 指出了一个问题:

int和的一个独特问题a ^ b ^ c ^ smallest ^ largest是中间结果可能是罕见的非 2 补码平台上的陷阱表示。– 楚克斯

@chux请解释一下?XOR 只是逐位运算,并不关心位代表什么,对吧?– 200_成功

XOR 不在乎,但结果可能是一个问题:例如,使用符号幅度整数,可能-1 ^ 1-0出现一个陷阱值 - 停止代码。参见 C11 §6.2.6.2 2. 位运算更好地用于无符号类型。– 楚克斯

进一步的 C11 §6.2.6.2 3 在罕见的非 2 的补码平台上指定 ^ 的实现定义行为 int 。特别是“未指定这些情况是否实际生成负零或正常零”,渲染 a ^ b ^ c ^ minimum ^ maximum 未指定即使不使用陷阱值它也会按需要工作。下一节将解释这如何成为 UB。最好将这个新颖的代码留给无符号类型。– 楚克斯

不幸的是,一种在逻辑上和数学上应该是合理的技术可能会因技术性而脱轨。

有没有办法挽救这种 XOR 技术并使其合法安全,理想情况下运行时开销为零?(可能涉及工会的事情?)

0 投票
4 回答
91 浏览

c - 如果我们将最大的可表示整数加一,结果是否为负?

该程序要求C实现回答一个简单的问题:

如果我们检查最大的可再现整数INT_MAX < 0并打印它。

所以,显示输出0。因为条件变为false并且关系运算符返回0

但是,如果我们添加 1到最大的可表示整数并检查条件,请参见以下程序。

并显示输出 1

为什么条件不会变为

另外,如果我们将最大的可再现整数加一,结果是否为负?

0 投票
1 回答
859 浏览

assembly - MIPS 程序集中的代码生成器

谁知道如何将这个伪代码翻译成 MIPS 程序集?种子是一个全局变量

0 投票
2 回答
59 浏览

java - 在 for 循环中比较两个有符号整数的奇怪行为

我正在尝试解决如下所述的问题:给定一组段和一组点,计算每个点包含多少段。

我遇到的问题是当我必须计算一个点被段包含多少次时。当我有某个输入时,内部循环会正确递增每个点的计数器,当我有另一个数据集时,天气会比较零与负数和非负数,它的行为很奇怪。

以下只是为了定位我面临的问题而创建的脚本,并不代表实际的实现。

测试用例给出如下输出:

情况1:

输出:

测试用例 1:

  • 2 个坐标为 [0, 5] 和 [7, 10] 的段。
  • 坐标 1、6 和 11 处的 3 个点。

    计算点的覆盖范围:

  • 坐标为 1 的点在 0 到 5 之间

    完成计算!

    自定义检查第 1 点:

  • 是(0 <= 1 和 1 <= 5)吗?真的

案例二:

输出:

测试用例 2:

  • 1 段坐标为 [-10, 10]。
  • 坐标 -100、100 和 10 处的 3 个点。

    计算点的覆盖范围:

    完成计算!

    自定义检查:

  • 是(-10 <= 0 和 0 <= 10)吗?真的

如您所见,内部循环的条件在某种程度上没有正确计算坐标为 0 的点相对于段 [-10, 10] 的情况。

在此先感谢,恩德里特。