| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 988 人关注过本帖
标题:关于位运算符 的问题
只看楼主 加入收藏
caomoshijia
Rank: 2
等 级:论坛游民
帖 子:43
专家分:20
注 册:2009-8-8
结帖率:83.33%
收藏
已结贴  问题点数:20 回复次数:10 
关于位运算符 的问题
        本人新人 可能问题太简单了 希望各位不要介意啊
    public class test
    {
        public static void main(String args[])
        {
            int i=3;
            int j=6;
            System.out.println("i->"+Integer.toBinaryString(i));
            System.out.println("j->"+Integer.toBinaryString(j));
            System.out.println("i&j->"+Integer.toBinaryString(i&j));
            System.out.println("i|j->"+Integer.toBinaryString(i|j));
            System.out.println("i^j->"+Integer.toBinaryString(i^j));
            System.out.println("~i&j|i&~j->"+Integer.toBinaryString(~i&j|i&~j));
            System.out.println("~i->"+Integer.toBinaryString(~i));
        }
    }
        结果是
              i-->11   可以帮我解释下这些 为什么 是11 00这些的吗?
              j-->110
              i&j-->10
              i|j-->111
              i^j-->101
              ~i&j|i&~j-->101
              ~i-->11111111111111111111111111111100
搜索更多相关主题的帖子: 运算符 
2009-09-04 16:22
lampeter123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:54
帖 子:2508
专家分:6424
注 册:2009-1-30
收藏
得分:1 
这个很少研究,位运算不是经常用,了解下就可以啦

你的优秀和我的人生无关!!!!
    
    我要过的,是属于我自己的生活~~~
2009-09-04 16:43
myfor
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:357
专家分:6
注 册:2006-3-13
收藏
得分:3 
    public class test
    {
        public static void main(String args[])
        {
            int i=3;
            int j=6;
            System.out.println("i->"+Integer.toBinaryString(i)); // 3的二进制是11即1*2+1
            System.out.println("j->"+Integer.toBinaryString(j)); // 6的二进制是110即1*2^2+1*2+0
            System.out.println("i&j->"+Integer.toBinaryString(i&j)); // 3和6按位与就是 10
            System.out.println("i|j->"+Integer.toBinaryString(i|j)); // 按位与
            System.out.println("i^j->"+Integer.toBinaryString(i^j)); //按位异或
            System.out.println("~i&j|i&~j->"+Integer.toBinaryString(~i&j|i&~j));
            System.out.println("~i->"+Integer.toBinaryString(~i));
        }
    }


[ 本帖最后由 myfor 于 2009-9-4 16:52 编辑 ]

广告位招租
2009-09-04 16:51
gameohyes
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:53
帖 子:1275
专家分:3629
注 册:2009-3-5
收藏
得分:10 
我来说下位运算吧。
     比如说3和6吧。
3的二进制是11
6的二进制是110
            3====>011
            6====>110
那么3&6==========>010  //解释(按位与)是都是真才是真。也就是说相同为1,相反为0;
    3|6==========>111  //解释(按位或)就是说相同为1,相反也为1;
    3^6==========>101  //解释(按位异或)也就是说相同为0,相反为1;
~ 这符号是(取反)的意思.------>反码就是所有的按位取反,0变1  1变0。但正整数的反码就是其本身.负数的反码是使用补码的形式表现出来的。   补码=反码+1(负数的补码)
比如说 3的二进制===>00000000 00000000 00000000 00000011
那么   ~3为========>11111111 11111111 11111111 11111100
很容易理解吧。呵呵,记的给我评分哦。

C#超级群 74862681,欢迎大家的到来!
2009-09-04 22:07
gameohyes
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:53
帖 子:1275
专家分:3629
注 册:2009-3-5
收藏
得分:0 
对了。相同是指1哦。0相同不管它
//解释(按位与)是都是真才是真。也就是说相同为1,相反为0  -------->都是1才是1;
//解释(按位或)就是说相同为1,相反也为1  ------------------------>有1就是1;
//解释(按位异或)也就是说相同为0,相反为1 ------------------------>都是1就是0 只有一个1才是1;


C#超级群 74862681,欢迎大家的到来!
2009-09-04 22:49
zhijian_gege
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2009-6-5
收藏
得分:0 
嗯。没错
2009-09-05 00:07
阿神圣
Rank: 1
等 级:新手上路
帖 子:2
专家分:3
注 册:2009-8-31
收藏
得分:3 
Integer.toBinaryString这玩意是整型转换2进制输出
2009-09-05 22:14
gameohyes
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:53
帖 子:1275
专家分:3629
注 册:2009-3-5
收藏
得分:3 
Integer.toBinaryString------> 是int型强制转换为String

C#超级群 74862681,欢迎大家的到来!
2009-09-06 09:06
caomoshijia
Rank: 2
等 级:论坛游民
帖 子:43
专家分:20
注 册:2009-8-8
收藏
得分:0 
回复 5楼 gameohyes
不好意思 电脑出问题了 ` 你给分的地方消失了   实在不好意思
2009-09-06 15:07
caomoshijia
Rank: 2
等 级:论坛游民
帖 子:43
专家分:20
注 册:2009-8-8
收藏
得分:0 
回复 4楼 gameohyes
请问本题中倒数第二问 中 得计算顺序是什么
2009-09-06 15:31
快速回复:关于位运算符 的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.035332 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved