问题标签 [twos-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.
32-bit - -1(整数)如何以大端、32 位二进制补码字节表示?
抱歉这个愚蠢的问题,但我在通过网络发送 -1 时遇到了一些麻烦。
如果 1 是....
00000000 00000000 00000000 00000001
.....应该-1不是......
11111111 11111111 11111111 11111111
.....我正在发送(255 255 255 255),但得到十进制值......
-1010842689
....在另一边。我是否错误地假设相同的 8 位规则适用于 32 位或其他东西?
谢谢你的帮助。
编辑:
事实证明,输出被格式化为 UTF-8,它不允许值 255 作为第一个字节,所以输出其他内容(错误代码?)。
binary - 2 的补码数据表示
这是我在过去的一篇论文中看到的一个问题。我想我理解 10s 的补码,但不明白下面关于二的补码的问题。另外,二进制的恭维与二进制有什么关系?
以 10 为底的数用 k=4 的 2s 补码中的 1110 表示?如果 k=5,答案会改变吗?
请解释答案,感谢您的帮助!
python - 如何在 Python 的补码中表达二进制文字?
在 python 中,0b01001011 将是 75,这也适用于 Two's Complement。但是 0b10101001 将是 169,而在二进制补码中,它将是 -87。如何表达二进制补码字面量?
c - ~x + ~y == ~(x + y) 总是假的?
此代码是否总是评估为假?两个变量都是二进制补码符号整数。
我觉得应该有一些满足条件的数字。我尝试测试两者之间的数字-5000
,5000
但从未达到相等。有没有办法建立一个方程来找到条件的解决方案?
将一个换成另一个会在我的程序中导致一个潜在的错误吗?
floating-point - 负浮点数表示为负整数?
我知道今天的计算机如何存储负整数,大多数计算机使用 2' 补码。我只是想知道 2' 补码方法也适用于浮点数等各种数字吗?
objective-c - uint8_t 到二进制补码函数
我在xcode中使用objective-c。如何将 uint8_t 数据转换为十进制二进制补码?范围是 -127 到 127,对吗?
如果我有:
我可以使用内置的功能或方法吗?有人有简单的功能吗?
谢谢!
math - 为什么有符号字节的范围是从 -128 到 127(2 的补码)而不是从 -127 到 127?
我读 了为什么Java中的字节范围是-128到127? 它说
128是10000000,倒过来就是01111111,加一又是10000000
所以它得出结论 -128 是 10000000
所以 +128 不能用 8 位的 2 的补码表示,但这意味着我们可以用 9 位表示它,所以 128 是 010000000,所以取它的 2 的补码 -128 是 110000000,
-128 10000000 或 110000000 的表示也是如此吗?表示位依赖吗?
为什么不简单地将较低范围 -127 fot 8 位而不是将 -128 写为 10000000 ?
c - 如何将两个寄存器中的 2 的补码值读入 int
我正在尝试从 STC3100 电池监视器 IC 读取值,但我得到的值不正确。数据表中的内容:
这是数据表:http: //www.st.com/internet/com/TECHNICAL_RESOURCES/TECHNICAL_LITERATURE/DATASHEET/CD00219947.pdf
我的代码中有什么:
我究竟做错了什么?这不是我应该如何将 2 的补码值复制到 int 中吗?
bit-manipulation - 2's(N) = 1's(N-1)
有一个有趣的事实:
数字 N 的 2 的补码等于数字 N 的 1 的补码减去 1。
即
下面的结果是显而易见的。
如何在第二个结果的帮助下证明第一个结果?
c - 符号扩展1位2的补码?
我是一名学生,我正在用 C 语言编写一个函数来对给定的位域进行符号扩展。我正在使用 32 位。
我在谷歌上查找了这个答案,但没有找到我要找的东西。
我正在编写一个函数,它返回从 32 个整数中提取的一个或多个连续位的二进制补码表示。最左边的位是符号位。
如果我拉一点点,我会返回什么?您如何将单个位表示为带符号的二进制补码数?