| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 19668 人关注过本帖
标题:java里 这个符号^是什么意思
只看楼主 加入收藏
jackyshen
Rank: 2
等 级:论坛游民
帖 子:53
专家分:35
注 册:2010-5-16
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:5 
java里 这个符号^是什么意思
java里 这个符号^是什么意思
搜索更多相关主题的帖子: java 符号 
2010-06-01 09:59
myhnuhai
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:3
帖 子:425
专家分:1725
注 册:2010-3-17
收藏
得分:10 
按位异或运算符(^)是二元运算符,要化为二进制才能进行计算,在两个操作数中,如果两个相应的位相同,则运算结果为0,否则1;例如:
int a=15;
int b=a^8;
运算结果为:a=15;b=7;
a(二进制)=1111;8(二进制)=1000;1111^1000=0111;er 0111=7(十进制);

不要让肮脏的记忆,迷失了原本纯洁的心灵!
2010-06-01 12:16
anshijordan
Rank: 2
等 级:论坛游民
帖 子:37
专家分:49
注 册:2009-2-25
收藏
得分:10 
^位逻辑运算符  由左向右运算   按位异或运算符

需要转化为二进制才可以  如果是一个0  一个1  这就叫异或   结果是1  ,如果是一个1  另一个也是1  结果就是0   两个0  结果也是0
2010-06-01 12:42
moonofautumn
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2010-5-14
收藏
得分:0 
进制是怎么转换的呢`
能详细解释下吗`?
2010-06-01 14:03
anshijordan
Rank: 2
等 级:论坛游民
帖 子:37
专家分:49
注 册:2009-2-25
收藏
得分:0 

0,16,2进制的互相转换

    所谓16进制,就是由0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F共16个数字组成。逢16进一位,下面就讲讲在没有任何工具的情

况下如何将一10进制转化为16进制:

    1000除以16得62余8,那么最低位为8,再将62除以16得3余14,那么倒数第2为E(14对于16进制来说是E),3比16小了,所以不用继续除了

,总的就是3E8,为1000的16进制数。

    想要将16进制的数转化为10进制,只需将上面的步骤反过来做就可以了。不用我多说吧!

    2进制仅由0、1两个数字组成,逢1进一。要将一10进制化为2进制,介绍一个简单的方法,先将10进制的数化为16进制,再化为2进制,举

个例子:

    515对应16进制为203H,将203转为2进制则为0010(2) 0000(0) 0011(3),一个位数对2进制来说是4个字符。0H就是0000、1H就是

0001、……、0EH就是1110、OFH为1111,大家可自己推一下。

    总之大家一定要熟练掌握各个进制的互相转化,尤其是100以内10--16和16--10的互相转化要记住。

    16-10H、32-20H、48-30H、64-40H、80-50H、96-60H、100-64H,255-FFH,65535-FF FFH,1677万-FF FF FFH,前为10进制,后有H的为16

进制,这些能记住最好,以后修改就方便许多了。

二进制

二进制是逢2进位的进位制,0、1是基本算符。

现代的电子计算机技术全部采用的是二进制,因为它只使用0、1两个数字符号,非常简单方便,易于用电子方式实现。

二进制四则运算规则
  加法  0+0=0,0+1=1+0=1,1+1=10
  减法  0-0=0,1-0=1,1-1=0,0-1=-1
  乘法  0×0=0,0×1=1×0=0,1×1=1
  除法  0÷1=0,1÷1=1

一、什么是二进制

  在现实生活和记数器中,如果表示数的“器件”只有两种状态,如电灯的“亮”与“灭”,开关的“开”与“关”。一种状态表示数码0,另一种状态表示数码1,1加1应该等于2,因为没有数码2,只能向上一个数位进一,就是采用“满二进一”的原则,这和十进制是采用“满十进一”原则完全相同。

  1+1=10,10+1=11,11+1=100,100+1=101,

  101+1=110,110+1=111,111+1+=1000,……,

  可见二进制的10表示二,100表示四,1000表示八,10000表示十六,……。

  二进制同样是“位值制”。同一个数码1,在不同数位上表示的数值是不同的。如11111,从右往左数,第一位的1就是一,第二位的1表示二,第三位的1表示四,第四位的1表示八,第五位的1表示十六。用大家熟悉的十进制说明这个二进制数的含意,有以下关系式

  (11111)(二进制)=1×24+1×23+1×22+1×2+1(十进制)

  一个二进制整数,从右边第一位起,各位的计数单位分别是1,2,22,23,…,2n,…。


1为什么需要八进制和十六进制?
 

编程中,我们常用的还是10进制……必竟C/C++是高级语言。

比如:

int a = 100,b = 99;

不过,由于数据在计算机中的表示,最终以二进制的形式存在,所以有时候使用二进制,可以更直观地解决问题。

但,二进制数太长了。比如int 类型占用4个字节,32位。比如100,用int类型的二进制数表达将是:

0000 0000 0000 0000 0110 0100

面对这么长的数进行思考或操作,没有人会喜欢。因此,C,C++ 没有提供在代码直接写二进制数的方法。

用16进制或8进制可以解决这个问题。因为,进制越大,数的表达长度也就越短。不过,为什么偏偏是16或8进制,而不其它的,诸如9或20进制呢?

2、8、16,分别是2的1次方,3次方,4次方。这一点使得三种进制之间可以非常直接地互相转换。8进制或16进制缩短了二进制数,但保持了二进制数的表达特点。在下面的关于进制转换的课程中,你可以发现这一点。

6.2 二、八、十六进制数转换到十进制数

6.2.1 二进制数转换为十进制数

二进制数第0位的权值是2的0次方,第1位的权值是2的1次方……

所以,设有一个二进制数:0110 0100,转换为10进制为:

下面是竖式:

0110 0100 换算成 十进制

第0位 0 * 20  =  0

第1位 0 * 21  =  0

第2位 1 * 22  =  4

第3位 0 * 23  =  0

第4位 0 * 24  =  0

第5位 1 * 25  = 32

第6位 1 * 26  = 64

第7位 0 * 27  =  0     

---------------------------

              100   

用横式计算为:

0 * 20 + 0 * 21 + 1 * 22 + 1 * 23 + 0 * 24 + 1 * 25 + 1 * 26 + 0 * 27 = 100

0乘以多少都是0,所以我们也可以直接跳过值为0的位:

1 * 22 + 1 * 23 +  1 * 25 + 1 * 26 = 100
2010-06-03 14:15
lampeter123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:54
帖 子:2508
专家分:6424
注 册:2009-1-30
收藏
得分:0 
以下是引用moonofautumn在2010-6-1 14:03:40的发言:

进制是怎么转换的呢`
能详细解释下吗`?
Integer类


方法:

toHexString
public static String toHexString(int i)
以十六进制(基数 16)无符号整数形式返回一个整数参数的字符串表示形式。
如果参数为负,那么无符号整数值为参数加上 232;否则等于该参数。将该值转换为十六进制(基数 16)的无前导 0 的 ASCII 数字字符串。如果无符号数的大小值为零,则用一个零字符 '0' (’\u0030’) 表示它;否则,无符号数大小的表示形式中的第一个字符将不是零字符。用以下字符作为十六进制数字:

 0123456789abcdef
 这些字符的范围是从 '\u0030' 到 '\u0039' 和从 '\u0061' 到 '\u0066'。如果希望得到大写字母,可以在结果上调用 String.toUpperCase() 方法:
 Integer.toHexString(n).toUpperCase()
 
参数:
i - 要转换成字符串的整数。
返回:
参数的十六进制(基数 16)无符号整数值的字符串表示形式。
从以下版本开始:
JDK1.0.2

toOctalString
public static String toOctalString(int i)
以八进制(基数 8)无符号整数形式返回一个整数参数的字符串表示形式。
如果参数为负,该无符号整数值为参数加上 232;否则等于该参数。该值被转换成八进制(基数 8)ASCII 数字的字符串,且没有附加前导 0。

如果无符号数大小为零,则用一个零字符 '0' ('\u0030') 表示它;否则,无符号数大小的表示形式中的第一个字符将不是零字符。用以下字符作为八进制数字:

01234567
它们是从 '\u0030' 到 '\u0037' 的字符。

参数:
i - 要转换成字符串的整数。
返回:
用八进制参数(基数 8)表示的无符号整数值的字符串表示形式。
从以下版本开始:
JDK1.0.2

toBinaryString
public static String toBinaryString(int i)
以二进制(基数 2)无符号整数形式返回一个整数参数的字符串表示形式。
如果参数为负,该无符号整数值为参数加上 232;否则等于该参数。将该值转换为二进制(基数 2)形式的无前导 0 的 ASCII 数字字符串。如果无符号数的大小为零,则用一个零字符 '0' (’\u0030’) 表示它;否则,无符号数大小的表示形式中的第一个字符将不是零字符。字符 '0' ('\u0030') 和 '1' ('\u0031') 被用作二进制数字。


参数:
i - 要转换为字符串的整数。
返回:
用二进制(基数 2)参数表示的无符号整数值的字符串表示形式。
从以下版本开始:
JDK1.0.2

你的优秀和我的人生无关!!!!
    
    我要过的,是属于我自己的生活~~~
2010-06-03 16:37
快速回复:java里 这个符号^是什么意思
数据加载中...
 
   



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

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