相关疑难解决方法(0)

在C中表示负数?

C如何表示负整数?

它是通过二进制补码表示还是使用MSB(最重要的位)?

-1十六进制是ffffffff.

所以请为我澄清一下.

c negative-number twos-complement language-lawyer

22
推荐指数
3
解决办法
2万
查看次数

在python中不使用“+”运算符的两个整数的总和

需要一些帮助来理解 leetcode 371 的 Python 解决方案。“两个整数的总和”。我发现https://discuss.leetcode.com/topic/49900/python-solution/2是投票最多的 python 解决方案,但我在理解它时遇到了问题。

  • 如何理解“% MASK”的用法以及为什么“MASK = 0x100000000”?
  • 如何理解“~((a % MIN_INT) ^ MAX_INT)”?
  • 当 sum 超过 MAX_INT 时,函数会大喊负值(例如 getSum(2147483647,2) = -2147483647),这不是不正确吗?

class Solution(object):

    def getSum(self, a, b):
        """
        :type a: int
        :type b: int
        :rtype: int
        """
        MAX_INT = 0x7FFFFFFF
        MIN_INT = 0x80000000
        MASK = 0x100000000
        while b:
            a, b = (a ^ b) % MASK, ((a & b) << 1) % MASK
        return a if a <= MAX_INT else ~((a % MIN_INT) ^ …
Run Code Online (Sandbox Code Playgroud)

python

8
推荐指数
1
解决办法
6825
查看次数

为什么表达式-3 &gt;&gt; 1会产生-2?

我正在(-3 >> 1)用Java 运行此程序并获得答案,-2但是据我说,应该是-1我在想的样子-3/2。请帮助我理解这一点。

int x = -3 >> 1;
System.out.println(x + " " + (-3 >> 1));
Run Code Online (Sandbox Code Playgroud)

java

4
推荐指数
1
解决办法
126
查看次数