美文网首页
<<、>>、>>>、&、I、^、~

<<、>>、>>>、&、I、^、~

作者: 西谷haul | 来源:发表于2021-01-29 17:00 被阅读0次

1.<<表示二进制下位数左移,不分正负数,低位补0
用byte数据类型来举例:10<<2,表示向左移动两位,实际上就是n<<x n=n*2^x,也就是 10 * 2^2 = 40

正数:比如说10的二进制码为:00001010
               左移两位后:00101000,结果为40

注意:
反码:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。  
补码:正数的补码与其原码相同;负数的补码是在其反码的末位加1。

负数:比如说-10的二进制码为:10001010
     因为是负数,先进行反码:11110101
              补码(加一):11110110
        左移两位后的补码为:11011000
                      减1:11010111
                     反码:10101000,结果为-40

2.>>右移同理,负数的话高位补1,正数高位补0

正数: 10的原码:00000101
       右移两位:00000010

结果2

负数:-10的原码:10001010
    先进行反码: 11110101
         补码: 11110110
      右移两位: 11111101
          减1: 11111100
          反码:10000011

结果-3

3.>>>表示无符号右移,也叫逻辑右移,即若该数为正,则高位补0,而若该数为负数,则右移后高位同样补0
正数时:跟>>一样

负数时:

-20源码:10000000 00000000 00000000 00010100
   反码:11111111 11111111 11111111 11101011
   补码:11111111 11111111 11111111 11101100
   右移:00111111 11111111 11111111 11111011
   结果:r = 1073741819

汉明距离:

两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。给出两个整数 x 和 y,计算它们之间的汉明距离。 注意:0 ≤ x, y < 2^31

//解题思路:
//1的二进制是00000001
//2的二进制是00000010
//4的二进制是00000100
//&的运算是一样返回1,不一样返回0,不断的将1的位置向前移动,
//可以判断对比值x,y的位上是否是1,如果都是1则返回1,一个是1一个是0则返回0....

class Solution {
    public int hammingDistance(int x, int y) {
        int res = 0;
        int p = 1;
        for (int i = 0; i < 32; i++) {
            if ((x & p) != (y & p)) {
                res++;
            }
            p *= 2;
        }
        return res;
    }
}

1.与运算符"&"

与运算符用符号“&”表示:两个操作数中位都为1,结果才为1,否则结果为0。

2.或运算符"|"

或运算符用符号“|”表示:两个操作中位有一个是1,结果为1,都为0,才取0。

3.非运算符“~”

非运算符用符号“~“表示:如果位为1,结果是0,如果位是0,结果是1。

~计算之后,如果得到的结果为负数,因为高位为“1”,要对其进行补码,负数的补码是将它绝对值的原码取反,末尾在加1。比如说8转成2进制是

原码为:00000000 00000000 00000000 00001000
在~后: 11111111 11111111 11111111 11110111
绝对值:00000000 00000000 00000000 00001000
再加一:00000000 00000000 00000000 00001001

然后加上一个负号,也就是~8 = -9

4.异或运算符

异或运算符是用符号“^”表示的,其运算规律是:两个操作数的位中,相同则结果为0,不同则结果为1。

image

相关文章

  • āiáiǎiài

    买了新的唇膏 水蜜桃配仙草 楼上的邻居 闹钟响第四遍的时候 发觉是爱情的马脚 偷笑着我没睡着 什么过不去还舍不得忘...

  • I f I f I f I f I f I f I f I f

    文/雅雅 以思考,进化时代。 2018年的第一篇文章,我一直思考书写的使命是什么? 对于我,对于我以外的看他的你。...

  • 【I原创I】I花园

    早些年的奇闻异事 偏偏不生杂草 把春天还给篝火 你祛毒 你神性 你感动于 光合作用的前所未有

  • 面试细节: i = i++和 i = ++i

    作者:默辩 来源:https://blog.csdn.net/qq_44377709/article/detail...

  • i++ ++i

    区分变量的值与表达式的值 变量名:也称标识符,一个 JavaScript 标识符必须以字母、下划线(_)或者美元符...

  • i++ ++i

    区分变量的值与表达式的值 i++ :表达式取原值,j但i的值是加1或减1之后的值++i :表达式和i的值都是加1或...

  • i++ ++i

    区分变量的值与表达式的值 i++ :表达式取原值,j但i的值是加1或减1之后的值++i :表达式和i的值都是加1或...

  • I am I

    老子在《道德经》中说:“知人者智,自知者明。许多人没活明白,大致原因是不知道自己是什么样的人,喜欢什么,讨厌什么。...

  • I AM I

    今天在阅读简书文章的时候,看到下面的一段话。 突然间想到好朋友曾经也对我说过我有点好高骛远,不够踏实,再一次的意识...

  • [ a:][ r ][ i: ][ i ]

    M: Cardio-Pulmonary resuscitation or CPR can save the lif...

网友评论

      本文标题:<<、>>、>>>、&、I、^、~

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