移位运算符

java中的移位运算符(<<, >>, >>>)

若如初见. 提交于 2020-03-06 06:57:49
java中有3种移位运算符 << : 左移运算符,不改变符号位,num << n 表示二进制左移n位,结果相当于 num * (2的n次方) >> : 右移运算符,不改变符号位,num >> n 表示二进制右移n位,结果相当于 num / (2的n次方) >>> : 无符号右移,长度扩展为4字节,最高位都为0,但正数扩展位补0,负数扩展位补1 举几个例子加深理解,为了方便演示,以byte类型为例: << :  -3 << 1     -3的二进制表示为10000011,左移一位后不改变符号位(最高位),移位后为10000110,结果为 -3 * (2的1次方) = -6 >> :  -3 >> 1     同上,右移一位后不改变符号位(最高位),移位后为10000001,结果为 -3 / (2的1次方) = -1 >>> :  -3 >>> 1     长度扩展为4字节(32位),最高位为0,负数扩展位补1,移位后为01111111111111111111111111111110,结果为 2147483646(Integer.MAX_VALUE - 1)     3 >>> 1     同上,区别在于正数扩展位补0,移位后为00000000000000000000000000000001,结果为 1 来源: https://www.cnblogs.com/zzb666/p

移位运算符

不想你离开。 提交于 2020-02-17 04:54:36
移位运算符 就是在二进制的基础上对数字进行平移。按照平移的方向和填充数字的规则分为三种:<<(左移)、>>(带符号右移)和>>>(无符号右移)。   在移位运算时,byte、short和char类型移位后的结果会变成int类型,对于byte、short、char和int进行移位时,规定实际移动的次数是移动次数和32的余数,也就是移位33次和移位1次得到的结果相同。移动long型的数值时,规定实际移动的次数是移动次数和64的余数,也就是移动66次和移动2次得到的结果相同。   三种移位运算符的移动规则和使用如下所示:   <<运算规则:按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零。   语法格式:   需要移位的数字 << 移位的次数   例如: 3 << 2,则是将数字3左移2位   计算过程:   3 << 2   首先把3转换为 二进制数字 0000 0000 0000 0000 0000 0000 0000 0011,然后把该数字高位(左侧)的两个零移出,其他的数字都朝左平移2位,最后在低位(右侧)的两个空位补零。则得到的最终结果是0000 0000 0000 0000 0000 0000 0000 1100,则转换为十进制是12.数学意义:    在数字没有溢出的前提下,对于正数和负数, 左移一位都相当于乘以2的1次方,左移n位就相当于乘以

移位运算符

拥有回忆 提交于 2020-01-11 03:46:43
左移运算符(<<)规则 按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零。 语法格式: 需要移位的数字 << 移位的次数   例如: 3 << 2,则是将数字3左移2位 计算过程: 3 << 2   首先把3转换为二进制数字0000 0000 0000 0000 0000 0000 0000 0011,然后把该数字高位(左侧)的两个零移出,其他的数字都朝左平移2位,最后在低位(右侧)的两个空位补零。则得到的最终结果是0000 0000 0000 0000 0000 0000 0000 1100,则转换为十进制是12。    数学意义: 在数字没有溢出的前提下,对于正数和负数,左移一位都相当于乘以2的1次方,左移n位就相当于乘以2的n次方。 右移运算符(>>)规则 按二进制形式把所有的数字向右移动对应位移位数,低位移出(舍弃),高位的空位补符号位,即正数补零,负数补1。 语法格式: 需要移位的数字 >> 移位的次数   例如11 >> 2,则是将数字11右移2位 计算过程: 11的二进制形式为:0000 0000 0000 0000 0000 0000 0000 1011,然后把低位的最后两个数字移出,因为该数字是正数,所以在高位补零。则得到的最终结果是0000 0000 0000 0000 0000 0000 0000 0010。转换为十进制是2。

java移位运算符

≯℡__Kan透↙ 提交于 2019-12-22 19:05:01
java移位运算符不外乎就这三种:<<(左移)、>>(带符号右移)和>>>(无符号右移)。 1、 左移运算符 左移运算符<<使指定值的所有位都左移规定的次数。 1)它的通用格式如下所示: value << num num 指定要移位值value 移动的位数。 左移的规则只记住一点:丢弃最高位,0补最低位 如果移动的位数超过了该类型的最大位数,那么编译器会对移动的位数取模。如对int型移动33位,实际上只移动了33%32=1位。 2)运算规则 按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零。 当左移的运算数是int 类型时,每移动1位它的第31位就要被移出并且丢弃; 当左移的运算数是long 类型时,每移动1位它的第63位就要被移出并且丢弃。 当左移的运算数是byte 和short类型时,将自动把这些类型扩大为 int 型。 3)数学意义 在数字没有溢出的前提下,对于正数和负数,左移一位都相当于乘以2的1次方,左移n位就相当于乘以2的n次方 4)计算过程: 例如:3 <<2(3为int型) 1)把3转换为二进制数字0000 0000 0000 0000 0000 0000 0000 0011, 2)把该数字高位(左侧)的两个零移出,其他的数字都朝左平移2位, 3)在低位(右侧)的两个空位补零。则得到的最终结果是0000 0000 0000 0000

Java移位运算符详解实例

孤街浪徒 提交于 2019-12-08 20:41:27
移位运算符它主要包括:左移位运算符(<<)、右移位运算符(>>>)、带符号的右移位运算符(>>),移位运算符操作的对象就是二进制的位,可以单独用移位运算符来处理int型整数。 运算符 含义 << 左移运算符,将运算符左边的对象向左移动运算符右边指定的位数(在低位补0) >> "有符号"右移运算 符,将运算符左边的对象向右移动运算符右边指定的位数。使用符号扩展机制,也就是说,如果值为正,则在高位补0,如果值为负,则在高位补1. >>> "无符号"右移运算 符,将运算符左边的对象向右移动运算符右边指定的位数。采用0扩展机制,也就是说,无论值的正负, 1.左移运算符 左移运算符用“<<”表示,是将运算符左边的对象,向左移动运算符右边指定的位数,并且在低位补零。其实,向左移n 位,就相当于乘上2 的n 次方,例如下面的例子。 public class test{ public static void main(String[] args) { int a=2,b=2,c; c=a<<b; System.out.print("a 移位的结果是"+c); } } 输出结果:8 分析上面代码,2 的二进制是00000010,它向左移动2 位,就变成了00001000,即8。如果从另一个角度来分析,它向左移动2 位,其实就是乘上2 的2 次方,结果还是8 2.无符号右移运算符 右移运算符无符号用“

位运算、移位运算符

只愿长相守 提交于 2019-12-04 05:04:12
一、位(bit)运算符: 位运算符 运算符含义 & 与(AND) | 或(OR) ^ 异或 ~ 取反 规则: 可以把1当做true ,0当做false 只有参与运算的两位都为1,&运算的结果才为1,否则就为0。 只有参加运算的两位都是0,| 运算的结果才是0,否则都是1。 只有参加运算的两位不同,^ 运算的结果才为1,否则就为0。 1、& 与运算 & 参见运算的两位数都为1,&运算符结果才为1,否则就为0。 6&3 00000000 00000000 00000000 00000110 –>6 00000000 00000000 00000000 00000011 –>3 00000000 00000000 00000000 00000010 & =2 2、| 或运算 | 参与运算的两位都为0,|运算的结果才为0,否则就为1。 00000000 00000000 00000000 00000110 –>6 00000000 00000000 00000000 00000011 –>3 00000000 00000000 00000000 00000111 | =7 3、^ 异或运算 ^只有参加运算的两位不同,^运算的结果才为1,否则就为0。 00000000 00000000 00000000 00000110 6 00000000 00000000 00000000

c语言中的移位运算符

匿名 (未验证) 提交于 2019-12-02 23:43:01
一丶 << 左移运算符 移位规则:左边抛弃,右边补零 int num=10; 0 0 二丶>>右移运算符 1.逻辑移位 左边用0补充,右边丢弃; 左边用原该值的符号位填充,右边丢弃 。 逻辑右移 0 1 1 1 文章来源: https://blog.csdn.net/fuxiaoxiaoyue/article/details/82788324

Java移位运算符 << >> >>>

两盒软妹~` 提交于 2019-12-02 04:54:39
简述 Java有三种移位运算符,分别为: 左移运算符 << 右移运算符 >> 无符号右移运算符 >>> 首先,移位运算符根据名字可知是使用二进制进行运算的。在Integer.java中,我们可以看到有两个静态常量, MIN_VALUE 和 MAX_VALUE ,这两个常量控制了Integer的最小值和最大值,如下: /** * A constant holding the minimum value an {@code int} can * have, -2<sup>31</sup>. */ @Native public static final int MIN_VALUE = 0x80000000; /** * A constant holding the maximum value an {@code int} can * have, 2<sup>31</sup>-1. */ @Native public static final int MAX_VALUE = 0x7fffffff; 注释上说明这两个值得范围: MIN_VALUE(最小值) = -2^31 = -2,147,483,648‬ MAX_VALUE(最大值) = 2^31 = 2,147,483,647 在32位运算中,首位为1则代表负数,0则代表正数,如: 1000 0000 0000 0000 0000