美文网首页程序员
leetcode 29 右移操作+int 负数知识

leetcode 29 右移操作+int 负数知识

作者: Ariana不会哭 | 来源:发表于2019-01-13 09:19 被阅读0次

二进制负数 正数的十进制对应。负数转换成十进制负数的法则和口诀:

image.png

异或:a^b ab状态不同时=1,相同时=0;

  • code
//my Runtime: 16 ms, faster than 97.70% of C
int divide(int dividend, int divisor) {
    if (divisor == 0 || (dividend == INT_MIN && divisor ==-1))
        return INT_MAX;
    long  m = abs(( long)dividend), n = abs(( long)divisor), ans = 0;
    if (m < n)
        return 0;
    while (m >= n) {
        long  cnt = 1, temp = n;
        while (m >= (temp << 1)) {
            cnt <<= 1;
            temp <<= 1;
        }
        ans += cnt;
        m -= temp;
    }

    return ((dividend < 0) ^ (divisor < 0)) ? -ans : ans;//异或 不一样=1
}

相关文章

  • leetcode 29 右移操作+int 负数知识

    二进制负数 正数的十进制对应。负数转换成十进制负数的法则和口诀: 异或:a^b ab状态不同时=1,相同时=0; ...

  • LeetCode中位运算相关算法汇总!!!

    前提知识: <<表示左移移,不分正负数,低位补0; >>表示右移,如果该数为正,则高位补0,若为负数,则高位补1;...

  • 秒懂左移右移运算符

    左移运算符 << 右移运算符 带符号右移 >> 无符号右移 >>> 对于正数来说和带符号右移相同,对于负数来说不同...

  • 二分查找法

    Java>>与>>>的区别>>:带符号右移。正数右移高位补0,负数右移高位补1。比如:4 >> 1,结果是2;-4...

  • 判断2个数a,b的大小。不能用、if、switch、“?”或其他

    通过符号位判断,由于int是32位,第32位是符号位,所以将两个数做差,将差值右移31位,正数的符号位为0,负数的...

  • htb optimistic

    这道题考察两个知识点: 1。int与unsigned int比较,用负数跳过比较,实现大量输入。 2。输入变相限制...

  • Java位运算

    Java常用的位运算: 带符号右移 >> 对于正数, 带符号右移 >> 会把所有的位右移,并在最前面补0对于负数,...

  • 无符号右移-1?关于Java位移,多数人不知道的

    之前看java源码的时候,看到有一个语句,整型无符号右移一个负数(如1024>>-22),当时惊呼:“还有这种操作...

  • Shift Operator

    按位操作符 逻辑移位均补0算术移位左移补0右移正数补1 负数补0看左数第一位

  • 位运算符

    1. 负数的表示 负数表示为: 对应的正数, 先取反, 再加1 2. 带符号左移/右移 (<<和>>), 无符号右...

网友评论

    本文标题:leetcode 29 右移操作+int 负数知识

    本文链接:https://www.haomeiwen.com/subject/ebdkdqtx.html