2⁶-1& 2⁵= 2⁵(或?很明显?)
今天,一位开发人员问我,按位65535和32,即2⁶-1和2⁵=是什么?我起初是自发地想的,但似乎很容易,于是我想了几分钟,然后回答了32。32似乎是正确的答案,但如何回答呢?65535=2⁶-1=1111111111111111(但似乎不对,因为这个二进制数所有的数字都应该是-1(?),32 = 100000,但我无法在我的头脑中转换它,所以我无论如何回答了32,因为我必须回答一些问题。答案32实际上是微不足道的吗?同样的方式是2 1⁶-1和2⁵-1 =31?为什么开发人员要问我确切的65535呢?
我被要求评估的二进制值是1111111111111111 & 100000,但我不明白为什么1111111111111111不是-1。应该是-1?65535是一个溢出的数字,我怎么知道呢?
发布于 2012-11-22 19:59:43
在这种情况下,数字被视为一个无符号整数,这意味着所有的位集都不会产生-1 (如果它是有符号的,那么是的,您将是正确的)。所以所有的16位都会给你65535。
有趣的是,在执行逻辑位操作时,签名状态并不是一个因素。位本身没有签名,因为它们是计算机中最低的组件。它是由cpu操作指定的,如果是ex中的位。登记册将被处理签名或未签名。
如果将最重要位(MSB)设置为签名(哪一个“侧”或哪个外部位将根据cpu体系结构的不同而变化),则产生负数。大端/小端)。
发布于 2012-11-22 19:55:01
这是微不足道的。65535的二进制数都是1,所以,任何X小于65535的ANDing都会给你X。
发布于 2012-11-23 09:41:23
回答你问题的第二部分。您已经将其标记为32位,因此,32位中的65535是00000000000000001111111111111111
,签名或未签名它不是-1。
https://softwareengineering.stackexchange.com/questions/176858
复制相似问题