美文网首页技术栈
2019-04-24——算法基础 移位运算

2019-04-24——算法基础 移位运算

作者: 烟雨乱平生 | 来源:发表于2019-04-25 00:58 被阅读0次

左移运算符(<<)

将一个运算对象的各二进制位全部左移若干位(左边的二进制位丢弃,右边补0)。

按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零。

  • 在数字没有溢出的前提下,对于正数和负数,左移一位都相当于乘以2的1次方,左移n位就相当于乘以2的n次方。

右移运算符(>>)

将一个数的各二进制位全部右移若干位,正数左补0,负数左补1,右边丢弃。

按二进制形式把所有的数字向右移动对应位移位数,低位移出(舍弃),高位的空位补符号位,即正数补零,负数补1

  • 右移一位相当于除2,右移n位相当于除以2的n次方。

无符号右移运算符规则

按二进制形式把所有的数字向右移动对应位数,低位移出(舍弃),高位的空位补零。对于正数来说和带符号右移相同,对于负数来说不同

为什么~1=-2

1在计算机中用二进制表示
0b0000_0000_0000_0000_0000_0000_0000_0001
1取反后在计算机中用二进制表示
0b1111_1111_1111_1111_1111_1111_1111_1110
因为该数的最高为是1表示一个负数,在计算机中负数使用的是补码表示,所以该二进制表示的是一个补码。
那么该数的绝对值是通过对补码取反,然后加1。
0b0000_0000_0000_0000_0000_0000_0000_0010
所以为2,在加上符号位,所以为-2。

相关文章

  • 2019-04-24——算法基础 移位运算

    左移运算符(<<) 将一个运算对象的各二进制位全部左移若干位(左边的二进制位丢弃,右边补0)。 按二进制形式把所有...

  • Java学习目录

    基础 Java 比较器Comparator和Comparable的使用和区别 进制、移位 Java 移位运算详解(...

  • 17.位运算基础及实战要点

    17.位运算基础及实战要点 位运算符 算数移位与逻辑移位 位运算的应用 为什么需要位运算 机器里的数字表示方式和存...

  • 常见位运算及技巧

    移位运算 移位运算包含逻辑移位(logical shif) 和 算术移位(arithmetic shift)。 逻...

  • MeasureSpec中的按位运算符、移位运算符讲解(左位移、与

    我们先看下基础知识 好了,下面看MeasureSpec中的按位运算、移位运算: android经常会有类似如图,(...

  • 位运算

    位运算包括逻辑运算和移位运算,相应地,位运算符包括逻辑运算符(包括~、&、|和^)和移位运算符(包括>>、<<和>...

  • 移位运算符

    移位运算符 简介:移位运算符就是在二进制的基础上对数字进行平移。按照平移的方向和填充数字的规则分为三种:<<(左移...

  • 2018-04-24 JAVA 移位运算符

    移位运算符操作的对象就是二进制的位,可以单独用移位运算符来处理int型整数。有三种移位运算符 (<<,>>,>>>...

  • Java移位运算

    背景 java或android源码中经常会使用移位运算来代替乘除运算,因为移位运算的性能比乘除运算的高(PS:对于...

  • 移位运算

    1,<< :左移运算符, System.out.println(1<<1);//2 System.out.prin...

网友评论

    本文标题:2019-04-24——算法基础 移位运算

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