问题标签 [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.
c++ - 二进制补码形式
在 TC++ 编译器中,5的二进制表示是(00000000000000101)。我知道负数存储为 2 的补码,因此二进制中的-5是(111111111111011)。最高有效位(符号位)是 1,表示它是负数。
那么编译器如何知道它是-5呢?如果我们将上面给出的二进制值(111111111111011)解释为无符号数,结果会完全不同吗?
另外,为什么 1 是5 -6 (1111111111111010)的补码?
binary - 什么是“2的补码”?
我正在学习计算机系统课程,并且一直在努力学习Two's Complement。我想理解它,但我读过的所有内容并没有为我带来图片。我已经阅读了维基百科文章和其他各种文章,包括我的教科书。
因此,我想开始这个社区 wiki帖子来定义什么是二进制补码,如何使用它以及它如何在强制转换(从有符号到无符号,反之亦然)、按位运算和位移运算等操作期间影响数字.
我希望的是一个清晰简洁的定义,程序员很容易理解。
binary - 为什么更喜欢二进制补码而不是有符号数的符号和大小?
我只是想知道为什么为了用二进制表示-1而使用二进制补码是有原因的:翻转位并加1?
-1 由 11111111 (二进制补码)表示,而不是(对我来说更直观) 10000001 ,它是二进制 1,第一位为负标志。
免责声明:我的工作不依赖二进制算术!
python - Python中的二进制补码
python中是否有一个内置函数可以将二进制字符串(例如'111111111111')转换为二进制补码整数-1?
binary - 2的补码例子,为什么不进位?
我正在观看 David Malan(这里)关于二进制的一些精彩讲座。他谈到了有符号/无符号、1 的恭维和 2 的补码表示。有一个 4 + (-3) 的加法,排列如下:
但他挥舞着神奇的双手,扔掉了最后一个进位。我做了一些维基百科研究,有点不太明白,有人可以向我解释为什么那个特定的进位(在 8's -> 16's 列中)被丢弃了,但他保留了它之前的那个吗?
谢谢!
java - 为什么字节 b = (byte) 0xFF 等于整数-1?
为什么byte b = (byte) 0xFF
等于integer
-1
?
前任:
它会打印-1
吗?
c - 如何证明 C 语句 -x、~x+1 和 ~(x-1) 产生相同的结果?
我想知道这句话背后的逻辑,证明。C 表达式 -x、~x+1 和 ~(x-1) 对于任何 x 都产生相同的结果。对于具体的例子,我可以证明这是正确的。我认为证明这一点的方法与二进制补码的性质有关。有任何想法吗?
java - 按位非运算符
为什么按位运算(~0);
打印 -1 ?在二进制中,不是 0 应该是 1 。为什么 ?
c - C - 转换为 2s 补码
我决定这样做
- 翻转数字 0=1, 1=0
- LSB 加 1
- 如果进位,则循环直到 array[i]==0
但我坚持最后一点;我怎么能在条件循环中这么说?
c# - 将 2 个字节转换为数字
我有一个控件,其中包含一个字节数组。
不时有两个字节告诉我有关数组中未来项目数量的一些信息。
举个例子,我可以有:
这个值显然是 7。
但是这个呢?
知道这相当于什么(作为正常的 int)吗?
我转到二进制并认为它可能是 11100000000 等于 1792。但我不知道它是否真的是这样工作的(即它是否使用整个 8 个项目作为字节)。
有没有什么方法可以在没有测试的情况下知道这一点?
注意:我使用的是 C# 3.0 和 Visual Studio 2008