Java_按位与&,按位或,取反,左移,右移运算符
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | / / 按位与运算& System.out.println( 0 & 0 ); / / 0 System.out.println( 0 & 1 ); / / 0 System.out.println( 1 & 1 ); / / 1 System.out.println( "===========" ); / / 按位或运算符| System.out.println( 0 | 0 ); / / 0 System.out.println( 0 | 1 ); / / 1 System.out.println( 1 | 1 ); / / 1 System.out.println( "===========" ); / / 异或运算符^ System.out.println( 0 ^ 0 ); / / 0 System.out.println( 0 ^ 1 ); / / 1 System.out.println( 1 ^ 1 ); / / 0 System.out.println( "===========" ); / / 取反运算符~ / / 部分要点: / / 什么是取反:取反就是 0 = > 1 1 = > 0 / / 什么是补码:正数的补码是其反码,负数的补码为其反码 + 1 ,例 5 的二进制为 0 0101 ,而 0 0101 的补码是 1 1010 , - 5 的二进制是 1 0101 ,而 1 0101 的补码是 1 1011 / / 什么是原码:规定正数的补码与原码相同,负数的原码是其反码 + 1 / / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - / / 6 为正数,二进制为 0 0110 (第一个 0 代表正负) / / 然后计算补码,即 1 1001 / / 求原码,对后 4 位进行按位取反,即 1 0110 / / 然后对二进制进行补码 + 1 操作,即 1 0111 / / 1010 转成十进制为 7 ,加上前面的负号,得 - 7 / / 如 6 为正数,其二进制为 110 ,取反后为 001 ,补码右边 + 1 为 1010 ,原来 6 为正,取反为负,得 - 2 / / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.out.println(~ 6 ); / / - 7 System.out.println(~ 42 ); / / - 43 System.out.println( "===========" ); / / 左移运算符<<(即向左移动,右边补 0 ) / / 如 2 的二进制为 10 ,若 2 << 2 ,则 1000 ,也就是十进制 8 ,同理若 2 << 3 ,则 10000 ,也就是十进制 16 ,根据规律可以看出n<<m = n * ( 2 ^m) System.out.println( 15 << 2 ); / / 60 : 15 * ( 2 ^ 2 ) / / 右移有符号运算符>>(即向右移动,但左边补 0 还是 1 需要看原来的数是正的还是负的) System.out.println( 2 >> 2 ); / / 0 (右边移除的数将被丢弃) System.out.println( - 8 >> 3 ); / / - 1 |
分类:
[Java]
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步