开发者社区> 问答> 正文

关于java中的运算

public class TestExample {
public static void main(String[] args) {
    // TODO Auto-generated method stub
    int n = 7;/* 00000111 */
    n <<= 3;
  System.out.println(n); /* 111000 */
    System.out.println(Integer.toBinaryString(n&n));/* 111000 */
    System.out.println(Integer.toBinaryString(n|1));/* 111001 */
    System.out.println(Integer.toBinaryString(2^n));/* 111010 */

    //  n = n&n + n|1 + 2^n ; /* 59 111011 */
    n = n&n + n|1 + 2^n +3 ;  /* 56 111000 */
    System.out.println(n);  /* 56 111000 */
}
}

为什么一个是59,一个是56?怎么算出来的的

展开
收起
蛮大人123 2016-06-02 11:22:48 1943 0
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪

    这些都是计算机基础的几种运算,<<左移位运算,&按位与,|按位或,^异或。了解这些操作的基础知识,就不难理解运行结果了。
    他们优先级是:先算术运算,后移位运算,最后位运算,从高到底依次是&,^,|。
    此外,表达式的结合次序取决于表达式中各种运算符的优先级,优先级高的运算符先结合,优先级低的运算符后结合。所以最后一句话等价于:
    n = n & (n + n) | (1 + 2 ^ n + 3);
    括号()优先级最高。

    2019-07-17 19:24:25
    赞同 展开评论 打赏
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载