Java中的 << , >> , 和 >>>所代表的含义

您所在的位置:网站首页 妹是什么意思和含义 Java中的 << , >> , 和 >>>所代表的含义

Java中的 << , >> , 和 >>>所代表的含义

2024-03-01 17:20| 来源: 网络整理| 查看: 265

标题 Java中的 > , 和 >>>所代表的含义 1.2,表示将8向右移动2位,结果为2。高位补0。 右移一位相当于除以二 二进制演算: 8的二进制:1 0 0 0 向右移动两位:0 0 1 0即为2,右移就是将数变小

3.>>>表示无符号右移运算符。高位补0

例如8>>>2表示将8向右移位2位,结果为2。 这个在正数时也可以和右移运算符一起理解。

但是在负数时就不一样了 举个例子: 将15右移无符号右移两位: 15>>>2 15的二进制是:1 1 1 1,右移两位变为 :0 0 1 1 ,转换成二进制为:3 那么-15>>>2 又是多少呢?,先求得-15的二进制,往下看

Demo:求-15>>2 和 -15>>>2

解释:一个是带符号右移两位,一个是无符号右移两位。 区别:看下面的讲解基本就明白了!

一个二进制的正数的原码和反码和补码是相同的,负数就不一样了。

要知道一个完整的二进制是由32位表示的

-15的完整二进制为: 10000000 00000000 00000000 00001111-15的反码为: 11111111 11111111 11111111 11110000 (反码:将二进制数除符号位外取反,所得的新二进制数为反码)-15的补码为: 11111111 11111111 11111111 11110001 (补码:反码加1称为补码。也就是说,要得到一个数的补码,先得到反码,然后将反码最右边的位加上1即为补码。)

求-15>>2 将-15的补码带符号右移两位 -15的补码为: 11111111 11111111 11111111 11110001 将-15的补码带符号右移两位: 11111111 11111111 11111111 11111100 不懂看图解 图解: 在这里插入图片描述在这里插入图片描述 看我圈住的红色部分,将红色部分那块右移两位到最右边(最右边两个被替换覆盖),左边空出的两个高位补1,这就是带符号右移

求值: 将补码无符号右移后的结果保留符号位其余的位取反: 10000000 00000000 00000000 00000011 然后+1,即为最后的结果: 10000000 00000000 00000000 00000100 结果为-4

求-15>>>2 将-15的补码无符号右移两位 -15的补码为: 11111111 11111111 11111111 11110001 将-15的补码无符号右移两位: 00111111 11111111 11111111 11111100

图解 在这里插入图片描述 在这里插入图片描述 看我圈住的红色部分,将红色部分那块右移两位到最右边(最右边两个被替换覆盖),左边空出的两个高位补0,这就是无符号右移

求值: 将-15的补码无符号右移两位后直接求结果: 00111111 11111111 11111111 11111100 结果为:1073741820

验证: 在这里插入图片描述 在这里插入图片描述

总结:

正数的左右移管它是有符号还是无符号,直接在原码的基础上移动,并求结果就好了负数的左右移区别在有符号左右移和无符号左右移 有符号的左右移: 第一步 — 求出负数的补码 ,第二步 — 将补码左右移,第三步 — 高位不变其余取反,最后一位再加1 无符号的左右移: 第一步 — 求出负数的补码 ,第二步 — 将补码左右移,第三步 — 直接求结果


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3