问题标签 [sign-extension]

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 回答
727 浏览

math - 在verilog(符号扩展)中进行算术编辑

(已编辑)我正在研究 verilog 算术项目,但我被卡在了符号扩展部分(假设这是问题所在)。我有 4 位输入 A、B,应该有 8 位输出。对于某些过程(总和,子...),我需要使用符号扩展来制作 8 位输出。所以对于算术的主体,我有这个代码。这是代码的一半。我没有包括一半因为它只是长..

当我检查我的模拟时,它除了 Z 和 Xs 之外没有任何值。它甚至不显示任何输入值。为什么会这样??谢谢你

(已编辑)这是我的测试台代码。有 8 种操作(求和、减法、乘法、除法、比较器、左移、右移、符号扩展)

lap3_top 文件在这里。(mux_8_1 将选择输出并通过结果输出。如果您需要代码,请告诉我!但我认为 mux 工作正常)

十分感谢大家!

0 投票
1 回答
77 浏览

c - 尝试将“字节”信息存储到 %x 时发生位扩展

所以我目前需要读入一串十六进制 ASCII 字符并使用它们来确定特定的操作码。为此,我打开一个文本文件(它不是真的,但为了简单的解释,我们称之为)然后在行中读取。因此,如果我得到像 40f1 这样的行...我让函数读取 2 个字符并将它们作为无符号整数存储到 mem_byte 中。然后我将它转换为一个字符以用作数组并保留信息的“字节”价值或通过读取 2 个十六进制数字的 ASCII 字符表示获得的两个十六进制数字的数值。

}

所以我遇到的问题是,如果我打印出测试结果,我会得到

这意味着代码将 char 扩展为 4 字节数据类型。我不确定 char 是否包含来自 unsigned int 的信息并将其打印出来,或者我误解了 %x 或类型转换的工作原理。我想让我的 char 指令数组只保存 2 个十六进制数字的信息,仅此而已。

0 投票
2 回答
579 浏览

c - C中的符号扩展实现

好的,我已经阅读了很多关于符号扩展的内容,但我对 C 以及所有“位运算符”都是全新的,所以我仍然无法弄清楚我应该如何在 C 中实际实现它。

我有一个调用的函数getField,它应该返回一个较大位中的一大块位的值。它需要三个整数:valuehilo加上一个 bool:isSigned作为参数。例如,此调用应返回 2:

我的功能有效,除非数字签名。在阅读了符号扩展后,我认为我的理解是,如果isSigned是,true那么我需要在位中添加一个,因此在上面的示例中,解决方案 ( 0010) 将变为 ( 111...0010)。这是我处理使数字签名的代码(result等于函数将返回的内容,如果isSignedfalse):

如果我应该返回 2s 补码有符号整数,这将起作用,但遗憾的是这不是我应该做的。任何帮助表示赞赏。

编辑:这是该方法的完整代码...

}

(注:我确实看到过类似的帖子,我读了它,但我仍然很困惑,所以我决定写一个不同的。对不起,如果这违反了规则。)

0 投票
2 回答
621 浏览

assembly - 如何在 IA32 上将带符号的整数相加成更大的和。32位有符号整数的64位总和?

我正在尝试对Assembly 32上带有符号的整数列表求和,但我只需要对没有符号的整数求和。你知道一些方法吗?

我的程序尝试对整数求和并存储在 中resultado,其大小为 64 位,因此为了能够做到这一点,我使用了两个 32 位寄存器(EAX 和 EDX),并检查总和何时产生进位。

毕竟,我在 resultado 上加入了 EAX 和 EDX。

这给出了一个 64 位和,将输入视为无符号 32 位,这不是我想要的。

0 投票
1 回答
103 浏览

base-conversion - 从基数 10 转换为具有适当符号扩展的任意基数

我想知道是否有一种正式的方法可以在转换时以任意基数正确签署扩展基数为 10 的数字。例如,如果我在基数 10 中有 -256,我将如何正确签署以基数 7(或基数 n)扩展结果而不假设结果的固定长度。

0 投票
1 回答
1755 浏览

c - 如何在C中将不同大小的数字符号扩展到16位?

不同大小的数字可以是 10 位或 12 位或 15 位。我想对立即位进行符号扩展,以便 16 位整数具有与 10、12 或 15 位值相同的值。

编辑

对不起,我没有发布我写的代码,那是行不通的。这里是:

这是在为我在学校的 CSE 课程建造的特殊机器上运行的。它没有运行 x86 架构。它被称为 CSE 410 机器。文档:https ://courses.cs.washington.edu/courses/cse410/18sp/410machine/isaManual.html

0 投票
1 回答
678 浏览

assembly - movsx 是否暗示了目的地的签名?

从这个问题

movzx ecx, 人; 将字节移动到双字,零扩展

如果您希望将 al 中的值视为已签名,还有 MOVSX。

上面提到了“movsx”意味着 al 已签名。

  1. 是否movzx意味着al签名
  2. movsx(如果有的话)的签名意味着什么ecx
  3. movzx(如果有的话)的签名意味着什么ecx
0 投票
2 回答
67 浏览

c++ - VS2015中的一个编译问题

在我的环境中,anint需要 4 个字节,而 short 需要 2,所以在movsx指令中,为什么有一个字节而不是一个字?希望可以有人帮帮我!

0 投票
1 回答
1003 浏览

assembly - 如何签署扩展mips(程序集)中程序参数中给出的二进制补码数

我正在尝试对从 mips 中的程序参数获得的二进制补码进行签名。我该怎么做?

0 投票
3 回答
1534 浏览

assembly - 零/符号扩展是无操作的,为什么每种尺寸类型的说明?

对于 x86 和 x64 编译器生成类似的零/符号扩展 MOVSX 和 MOVZX。扩展本身不是免费的,但允许处理器执行无序的魔法加速。

但在 RISC-V 上:

因此,无符号和有符号 32 位整数之间的转换是无操作的,从有符号 32 位整数到有符号 64 位整数的转换也是如此。

加法和移位需要一些新指令 (ADD[I]W/SUBW/SxxW) 以确保 32 位值的合理性能。

(C) RISC-V 规范

但同时,新的现代 RISC-V 64 位处理器包含 32 位有符号整数的指令。为什么?提高性能?那么 8 位和 16 位在哪里呢?我已经什么都不懂了。