问题标签 [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.
c - 没有得到整数溢出
假设我想打印一些值。我假设如果我的有符号变量超过 from TMin
and TMax
(在这种情况下,使用 4 字节 int,0x7FFFFFFF
asTmax
和0x80000000
as Tmin
),我应该得到整数溢出,但在这些示例中,我没有得到我期望的结果(在评论中解释):
c++ - 在有符号和无符号零之间排序c ++
我必须能够为我在大学使用 C++ 做的作业排序负零和零,有人能告诉我为什么下面的代码会产生负零吗?我被卡住了,我不确定为什么会这样......
如果在对上述向量进行排序时有更好的方法产生负零,请告知。非常感谢!
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
java - Java 中的 24 位到 32 位转换
我对一个名为OpenBCI的新 IoT 项目感兴趣,它基本上是一个开源 EEG,用于读取和处理脑电波和其他生物数据。在他们的文档中,他们声称无线传输的数据(通过 RFDuino)发送 24 位数据。要将 24 位值转换为 32 位有符号整数,他们建议使用以下 Java 友好的处理代码:
我想我正试图准确地了解这里发生了什么。让我们看一下第一段代码:
- 为什么假设输入中有 3 个字节是安全的?
- 价值的意义
0xFF
何在? - 左移 (
<<
) 的目的是什么?
第二段也有点神秘:
- 为什么
newInt & 0x00800000
?有什么意义0x00800000
? - 为什么
if-else
基于上述操作的正负结果? 0xFF000000
和的意义是0x00FFFFFF
什么?
我想我想更好地理解这个功能有很多挥手和魔法!
binary - 添加到无符号和有符号二进制整数
我想知道是否有人可以向我解释当我们添加二进制数时会发生什么。
假设我们有 4 位,0b1111,我们将 1 加到 0b1111。我认为二进制编码应该是0b10000;但是,由于只有 4 位,因此这些位将变为 0b0000。
我想知道为什么会发生这种情况,是因为没有足够的空间吗?如果 0b1111 是有符号整数,我们如何将 1 加到它上面?
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 技术并使其合法安全,理想情况下运行时开销为零?(可能涉及工会的事情?)
c - 如果我们将最大的可表示整数加一,结果是否为负?
该程序要求C
实现回答一个简单的问题:
如果我们检查最大的可再现整数INT_MAX < 0并打印它。
所以,显示输出0
。因为条件变为false并且关系运算符返回0
。
但是,如果我们添加 1
到最大的可表示整数并检查条件,请参见以下程序。
并显示输出 1
。
为什么条件不会变为假?
另外,如果我们将最大的可再现整数加一,结果是否为负?
assembly - MIPS 程序集中的代码生成器
谁知道如何将这个伪代码翻译成 MIPS 程序集?种子是一个全局变量
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] 的情况。
在此先感谢,恩德里特。