Chinaunix首页 | 论坛 | 博客
  • 博客访问: 695285
  • 博文数量: 160
  • 博客积分: 8847
  • 博客等级: 中将
  • 技术积分: 1656
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-25 16:46
个人简介

。。。。。。。。。。。。。。。。。。。。。。

文章分类

全部博文(160)

文章存档

2015年(1)

2013年(1)

2012年(4)

2011年(26)

2010年(14)

2009年(36)

2008年(38)

2007年(39)

2006年(1)

分类: Java

2009-06-24 15:30:08


java的位操作符,最早来源于一个想法,工程师想在机顶盒里面控制硬件,而c和c++本身就有对硬件操作的位操作,所以java借鉴了这个方法。


public class C311 {
    static int a = -5;
    static int b = 5;
    
    public static void main(String[] args) {
        // TODO Auto-generated method stub

        System.out.println(a >> 2);
        System.out.println(b >> 2);
        System.out.println(a << 2);
        System.out.println(b << 2);
        
        /** -5 用二进制表示:
         * 1)5 -- 0000 0101
         * 2)补码 -- 1111 1010
         * 3)末尾加1 -- 1111 1011 = -5
         *
         * -5 向左移2位
         * 1)末尾补0 -- 1110 1100
         * 2)补码 -- 0001 0011
         * 3)末尾加1 -- 0001 0100 = -20
         *
         * -5 向右移2位
         * 1)高位补1 1111 1110
         * 2)补码 -- 0000 0001
         * 3)末尾加1 -- 0000 0010 = -2
         *
         * 5用2进制表示 -- 0000 0101
         * 5向左移动2位
         * 1)末尾补0 0001 0100 = 20
         *
         * 5向右移动2位
         * 1)高位补0 0000 0001 =1
         * */

        int c = -1;
        System.out.println(Integer.toBinaryString(c));
        System.out.println(Integer.toBinaryString(c >>> 2));
       
        /** >>> 位操作符是c、c++中没有的。
         * 这种符号规定,无论正负,都在高位补0
         *
         * */
       
        char d = 'a';
        System.out.println((d));
        System.out.println(((char)(d >> 1)));
        System.out.println(((char)(d << 1)));

    }
}

阅读(836) | 评论(0) | 转发(0) |
0

上一篇:java -- 拿波里次数列

下一篇:java基本类型

给主人留下些什么吧!~~