A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© vipzh 中级黑马   /  2012-12-1 13:17  /  1453 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  &是位运算符,表示按位与运算,怎么理解?

5 个回复

倒序浏览
0 & 1 = 0
1 & 0 = 1
1 & 1 = 1
0 & 0 = 0
回复 使用道具 举报
&&表示两个语句为真才为真,
&表示是、两个二进制数,相对应的两位为真才为真。
如1101&0101==0101

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
几种按位运算符:
  1. 按位与运算(&):二元运算符。当被运算的两个值都为1时,运算结果为1;否则为0。
   2. 按位或运算(|):二元运算符。当被运算的两个值都为0时,运算结果为0;否则为1。
   3. 按位异或运算(^):二元运算符。当被运算的两个值中任意一个为1,另一个为0时,运算结果为1;否则为0。
   4. 按位非运算(~):一元运算符。当被运算的值为1时,运算结果为0;当被运算的值为0时,运算结果为1。
它们不像逻辑运算符(与运算&&、或运算||、非运算!)操作的是布尔值true或false,或者是一个能产生布尔值的表达式;“按位运算符”所指的“位”就是二进制位,因此它操作的是二进制的0和1。在解释按位运算符的执行原理时,顺便说说它们和逻辑运算符的区别。
   1. 逻辑运算符只能操作布尔值或者一个能产生布尔值的表达式;按位运算符能操作整型值,包括byte、short、int、long,但是不能操作浮点型值(即float和double),它还可以操作字符型(char)值。按位运算符不能够操作对象,但是在Java5.0及以上版本中,byte、 short、int、long、char所对应的包装器类是个例外,因为JAVA虚拟机会自动将它们转换为对应的基本类型的数据。

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
&(与运算),|(或运算),^(异或运算):
转换成2进制数来运算,0视为假,1视为真,最后转回数值得到结果  例:6&3=2;6|5=7;
&:二进制位进行&运算,只有1&1时结果是1,否则是0;
按位与的作用(获取发某一段数据)
与0做与运算,清0。
与1做与运算,保留原值。
按位与的特性(n和1按位与,结果还是n)

|:二进制位进行|运算,只有0|0 时结果是0,否则是1;
与0做按位或,可以保留原值(可以清0用)
与1做按位或,改写1(可以改1)
按位或的特性(n和0按位或,结果还是n)
^:任何相同二进制位进行^运算,结果是0;1^1=0,0^0=0;
   不相同二进制位^运算结果是1;1^0=1,0^1=1;
(特点:一个数异或同一个数两次,结果还是那个数)例: 7 ^ 4 ^ 4 =7,这可以起到了加密的作用,同时还能当作一种交换的方法,例:n=n^m;        m=n^m;//(n^m)^m;  n=n^m; //n^(n^m);
与一个数连续异或两次,还原!)

~:取反:所有位上的值,0变1,1变0。
正数取反,得到一个符号为1的负数,这个负数减一再取反得到负数的绝对值,然后再在这绝对值前面加上一个负号,就是正数的取反了
负数取反,(因为负数在内存中是补码进制存储,数值一律用补码来表示(存储),所以负数的补码是其绝对值的原码,取反再加1。)然后把这个负数的补码再取反就是这个负数的取反了
回复 使用道具 举报
建议跟&&区别理解,&:二进制位进行&运算,只有1&1时结果是1,否则是0;与&不同的是当左边为假时,&&运算后面的判断都不执行。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马