问题标签 [signed]

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 投票
1 回答
5442 浏览

mips - 带 32 位寄存器的双精度整数减法 (MIPS)

我正在学习计算机算术。我使用的书(帕特森和轩尼诗)列出了以下问题。

编写 mips 代码对 64 位数据进行双精度整数减法。假设第一个操作数在寄存器 $t4(hi) 和 $t5(lo) 中,第二个在 $t6(hi) 和 $t7(lo) 中。

我对答案的解决方案是

但是作者针对此问题给出的解决方案如下

对于有符号双精度整数,

对于无符号双精度整数,

我对sub/addand操作差异的理解subu/addu是溢出异常是在sub/add而不是在subu/addu. sub/add和 和subu/addu减/加操作数的位以及对有符号或无符号操作数的解释对结果没有影响,这与 in和slt指令sltu不同。

问题 1
我从作者给出的解决方案中推断出正在处理溢出检测,而我在我的解决方案中没有想到相同的解决方案。我对吗?还有什么我想念的吗?

问题 2假设我的上述推论是正确的,为什么在使用and
减去无符号双精度的情况下,作者提供的解决方案会关闭溢出检测?addusubu

0 投票
13 回答
34555 浏览

c++ - 在 C/C++ 中检测有符号溢出

乍一看,这个问题似乎与如何检测整数溢出?,但实际上有很大不同。

我发现虽然检测无符号整数溢出非常简单,但检测 C/C++ 中的有符号溢出实际上比大多数人想象的要困难。

最明显但最幼稚的方法是:

问题在于,根据 C 标准,有符号整数溢出是未定义的行为。 换句话说,根据标准,一旦您甚至导致有符号溢出,您的程序就如同取消引用空指针一样无效。所以你不能导致未定义的行为,然后在事后尝试检测溢出,如上面的后置条件检查示例。

尽管上述检查可能适用于许多编译器,但您不能指望它。事实上,因为 C 标准说有符号整数溢出是未定义的,所以一些编译器(如 GCC)会在设置优化标志时优化掉上述检查,因为编译器假定有符号溢出是不可能的。这完全破坏了检查溢出的尝试。

因此,检查溢出的另一种可能方法是:

这似乎更有希望,因为我们实际上不会将两个整数相加,直到我们事先确保执行这样的相加不会导致溢出。因此,我们不会导致任何未定义的行为。

但是,不幸的是,此解决方案的效率比初始解决方案低很多,因为您必须执行减法运算才能测试您的加法运算是否有效。即使你不关心这个(小)性能损失,我仍然不完全相信这个解决方案是足够的。该表达式lhs <= INT_MIN - rhs看起来与编译器可能优化掉的那种表达式完全一样,认为有符号溢出是不可能的。

那么这里有更好的解决方案吗?保证 1) 不会导致未定义的行为,以及 2) 不会为编译器提供优化溢出检查的机会?我在想可能有一些方法可以通过将两个操作数都转换为无符号数,并通过滚动你自己的二进制补码算术来执行检查,但我不确定如何做到这一点。

0 投票
1 回答
732 浏览

ssl - 自签名 SSL 证书和 nginx 问题

说,我有一个域 abc.com,我已经成功为 www.abc.com 制作了一个自签名 SSL 证书(甚至 *.abc.com),但是它不适用于 abc.com

如何解决这个问题?

0 投票
2 回答
9745 浏览

c - c printf 有符号浮点数

确保 + 或 - 符号始终显示在 C 中 printf() 中的浮点值前面的格式化程序是什么?
我有一段时间没有做C了,所以我在网上哪里可以找到一个好的参考,任何建议都非常感谢

0 投票
5 回答
3431 浏览

c# - 从 C# 中的恒定位宽扩展符号

我有一个长度为 5 位的值。4 位决定数字,第 5 位决定符号,保持 -16 和 +15 之间的任何值。如何在 C# 中完成从恒定位宽扩展的符号?我知道在 C 中,我可以使用类似以下的内容来完成此操作:

我怎样才能在 C# 中做类似的事情?

0 投票
4 回答
3396 浏览

c++ - 为什么必须对循环变量进行并行签名?

我只是从在线教程和资源中学习 OpenMP。我想使用parallel for循环对矩阵求平方(将其与自身相乘)。在IBM 编译器文档中,我发现了“迭代变量必须是signed整数”的要求。在 GCC 实现中也是如此吗?它是否在 OpenMP 标准中指定?如果是这样,是否有此要求的原因?

(这并不重要,因为预期的尺寸远小于INT_MAX,但它确实花费了我一些演员。)

0 投票
2 回答
861 浏览

c - C:在无符号变量中执行有符号比较而不进行强制转换

我想要一个具有以下签名的函数:

它的输出应该是1iff 中存储的位a的 2 补码视图大于存储在 中的位的 2 补码视图b。否则输出应该是0. 例如:

该函数不具有任何隐式/显式转换(因为这些转换是实现定义的,因此不可移植)

一种这样的实现是:

你能建议一个使用算术而不是条件来执行这个计算的实现吗?如果必须,您可以使用一种条件

在比较和 C 中的算术中混合使用 un/signed 变量是灾难的根源。此功能是如何规避问题的示例。

我想有符号变量比较背后的程序集类似于我想要实现的函数(在不支持有符号比较的架构上)

0 投票
2 回答
1243 浏览

java - 关于有符号字节的二进制转换为十六进制的问题

1) 我知道当您将二进制转换为十进制时,最左边的位代表 0、1...等等。因此,例如将 0001 转换为十进制,它是 0*2^0+0*2^1+0*2^2+1*2^3,所以十进制值为 8。

2)例如,当您签署了十六进制 0x80 时,它将被转换为二进制 1000 0000 但是为了计算这个二进制表示的十进制值,它是有符号的,所以我们必须反转 7 位所以我们得到 1111111 并加 1 这给了我们10000000 即 -128。

我的问题是为什么在第二种情况下,当我们计算有符号字节的小数时,我们必须从最右边的位开始为 0,所以我们有 ....+1*2^8。对于第二种情况,为什么 2^0 不是我们在 1) 中计算的最左边的位?

谢谢。

0 投票
2 回答
1295 浏览

unsigned - 有符号和无符号 16 位 BCD 之间的区别?

你怎么区分?例如,假设您有0110 0101 1001 0011. 无符号 BCD 是 6593,但有符号值是多少?

0 投票
1 回答
123 浏览

java - 有没有其他使用签名小程序的方法

如果我想部署高权限的小程序,它们需要被签名。为此,会创建一个证书,然后使用 jarsigner 对 jar 文件进行签名。之后在 HTML 代码中必须指定我们之前签名的代码、代码库和存档(jar)。

但是,我编写了一个 servlet,它充当两件事:

  1. 它位于代码库指向的 URL 处,并为小程序提供类字节码。
  2. 同一个 servlet 还使用序列化与 applet 进行通信,因此,每当 applet 获得一个类时,它不知道它会转到最终返回到 servlet 的代码库。
几乎就像一个迷你 RMI 设置,但更简单。我希望你能看到这里面的力量。

不幸的是,对于签名的小程序,需要存档。现在 servlet 也能够加载一个 Certificate 对象并将其发送到 applet。所以这里是设置:在某一时刻小程序接收类字节码,它也有证书。如果小程序可以使用该证书实例化所有接收到的类,那就太好了(否则来自 jar 的代码已签名,而外部代码不会向用户提示讨厌的消息)。

所以我向 Java 爱好者提出的问题是:我是否可以 通过任何方式使用字节码数据和证书将类实例化为签名对象,以便插件弹出安全对话框,接受证书并提升对象的权限。我能找到的是,有一个类 CodeSource 接受代码库 URL 和证书,并且对签名过程至关重要。我不确定如何拦截小程序内的类加载以安装不是通过存档通过 JAR 文件获得的其他证书。

你说什么?谢谢一堆。