首页 > 编程语言 > 详细

javase-位运算符

时间:2019-02-28 13:42:44      阅读:111      评论:0      收藏:0      [点我收藏+]
/*
 * <<:左移 左边最高位丢弃,右边补齐0
 * >>:右移 最高位是0,左边补齐0;最高位是1,左边补齐1
 * >>>:无符号右移 无论最高位是0还是1,左边补齐0
 * 面试题:
 * 请用最有效率的方式写出计算2乘以8的结果?
 *      2 << 3
 */
public class OperatorDemo {

    public static void main(String[] args) {
        
        //<< 把<<左边的数乘以2的移动次幂
        System.out.println(3<<2);//3*2^2=12
        //>> 把>>左边的数除以2的移动次幂
        System.out.println(24>>2);//24/2^2=6
        System.out.println(24>>>2);
        System.out.println(-24>>>2);
    }

}
/*
 * <<左移:
 * 计算出3的二进制:11
 *     00000000 00000000 00000000 00000011
 * (00)000000 00000000 00000000 0000001100
 * >>右移:
 * 计算出-24的二进制:11000
 * 原码:10000000 00000000 00000000 00011000
 * 反码:11111111 11111111 11111111 11100111
 * 补码:11111111 11111111 11111111 11101000
 *      1111111111 11111111 11111111 111010(00)
 * 反码:1111111111 11111111 11111111 111001
 * 原码:1000000000 00000000 00000000 000110    
 * 结果:-6
 * >>
 */

 

javase-位运算符

原文:https://www.cnblogs.com/bbeb/p/10449288.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!