问题标签 [ones-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.
c - 使用格式说明符 %d 和 %u 将 ~0 类型转换为 (unsigned int) 和 (unsigned short) 对 short 产生相同的结果,但对 int 产生不同的结果
在计算有符号和无符号的 char、short、int 和 long 变量范围的过程中,我采用了以下解决方案:
根据解决方案 1,我希望在下面的代码中输出 -1 和 65535,假设它的行为与两个格式说明符的代码(unsigned short)~0
相同。(unsigned int)~0
(unsigned short)~0
为什么和的行为有所不同(unsigned int)~0
?
python - Python:使用 join 和 lambda 的补码
我正在尝试创建将数字转换为其 Ones 补码的管道,例如 (8)
1234 -> 7654
83743 -> 05145
我试图以这种风格创建一些东西,但我无法弄清楚如何正确构建管道。
错误
TypeError:“int”对象不可调用
assembly - Assembly-RiscV 中的“不”是什么意思?
not
在 RiscV中是什么意思?我从 C 中翻译了一些代码后得到它,如下所示:
c - C 在内部使用哪个补码?
我查找的所有内容都只是告诉我如何在 C 中进行补码运算/计算。
我想知道 C 在内部使用什么表示以及它如何处理溢出。
binary - 如何对补数进行算术运算并纠正溢出?
对于一些背景故事,我正在制作一个可以对补数进行算术运算的程序。为此,我将二进制字符串转换为 BigInteger,然后使用所述 BigInteger 执行数学运算,然后将其转换回二进制字符串。唯一的问题发生在最终结果低于 -127 或高于 +127 时,因为由于补数的性质,我不知道如何纠正它。我希望我能以某种方式将它们转换为无符号数字,并像这个答案所说的那样做。
我还从阅读链接的问题中得到了一些其他问题。我把它们放在引号中。我只是想了解它们的含义,然后向我解释。
首先
我知道如果最高位有进位,r 基数的 r-1 补码应该在进位附近结束。
第二
结束进位实际上相当简单:它将加法运算的模数从 rn 更改为 rn-1。
最后
同样,让我们将进位位保持在原位。如果你把数字看成无符号整数,我们计算的是 13 + 11 = 24。但是,由于回绕进位,加法是模 15 完成的,所以我们最终得到 9,它代表 -6(正确的结果)。
如果有人可以向我解释这些引用并提供一些网页供我阅读,我将不胜感激!:)
go - uint(0) - uint(1) 输出 uint64 的 maxValue
谁能告诉我为什么输出不是-1而是18446744073709551615?
输出
目前,我的理解如下。
pc中的减法将转换为加法。b 是负数,所以 a(0) 和 b(-1) 的 2 的补码将被添加使用。
所以计算就像
通常,如果 a 和 b 是 int 类型,则 2 的补码将自动转换为二进制结果 (10000000 00000000 00000000 00000001),即 -1。但是a和b是单位的类型,所以不会转换成二进制,它会把11111111 11111111 11111111 11111111(2的补码)的结果当作正常的二进制结果输出。 ← 这个解释对吗?
我的理解是否遗漏了什么?
另一个问题是 11111111 11111111 11111111 11111111 应该是 pow(2,64) - 1 即 18446744073709552000
为什么我的输出只有 18446744073709551615?
binary - 二进制表示(有符号幅度,1 的补码,2 的补码)
我是二进制表示的新手,想澄清一些问题......
据我了解:
- Signed Magnitude 的第一位代表符号(0 = 正,1 = 负)
- 1 的补码基本上是 Signed Magnitude 的倒数(1 变为 0,0 变为 1)
- 2 的补码只是从 1 的补码中加 1
我想澄清一下:
- 1 的补码和 2 的补码仅适用于负符号幅度(以 1 开头)
- 二进制对于正符号幅度、1 的补码和 2 的补码是相同的
请参阅所附图片。附言。干杯!
binary - 使用二进制系统表示数据的不同方式需要什么?
有许多方法可以使用二进制表示数据,如无符号、有符号幅度、1s/2s 补码、偏移 M、浮点、ASCII 和 Unicode。为什么我们需要这么多不同的方式?
computer-science - 带有正负十进制值的九的补码问题
“如果数字是正数,则数字的九的补码就是它自己。”
我在一本名为“计算机科学基础”的书上读到这个,它说+234的9的补码是+234。
同时,我在Youtube上找了一些教程,但是,它说999减234是+234的9的补码,我现在很困惑。
书:234 个 9 = 234
优酷:234 个 9 = 999-234=765
有人可以向我解释一下吗?
bit-manipulation - 使用其他按位运算表达按位否定(`NOT`,按位补码)?
我正在用一种有限的语言编写一个算法,我可以使用的位运算符是
AND
:&
OR
:|
XOR
:^
SRL
:(<<
左移)SLL
:(>>
右移)
我意识到我需要能够取整数的按位补码,通常用~x
其他语言表示。
我能以某种方式表达~x
,只使用{&, |, ^, <<, >>}
运算符吗?
我会尝试在语言的编译器中实现这个运算符,但这似乎是一项非常具有挑战性的任务。我宁愿做一些肮脏的黑客来表达NOT x
没有~
.