zoukankan      html  css  js  c++  java
  • 位运算

    《硬核程序基础》JAVA  位运算代码笔记

    public class TestOperator {
        public static void main(String[] args){
            
            System.out.println("=====按位运算符=====");
            int num =86;
            /**位运算1
             * 判断奇数偶数
             * 后面的判断要整体加括号,因为前面的"+"优先级较高,编译时系统会先运算 "+" 
             */
            System.out.println(num+"是:"+ ( (num&1)==0?"偶数":"奇数" ) );
            
            /**位运算2
             * 判断第几位二进制数是0还是1
             * 86:                         1010110
             * 1<<4: 1左移4位   0010000
             */        
            System.out.println(num + "第五位二进制数是:" +(((num&(1<<4))==0)?"0":"1"));
            System.out.println(num + "第五位二进制数是:" +((((num>>4)&1)==0)?"0":"1"));
            
            /**位运算2
             * 交换两个整数的值
             */
            int num1 = 10;
            int num2 = 20;
            /**
             * a、b两个值不相同,异或结果为1
          * 异或可以理解为不进位加法:0+0=0,1+1=0,1+0=1 * 和自己异或是0,和0异或是自己 * _num1:第一个数的值 _num2:第二个数的值 * num1 = _num1^_num2 * num2 = _num1^_num2^_num2 = _num1^0 = _num1 * num1 = _num1^_num2^_num1 = _num2^0 = _num2
    */ num1 = num1^num2; num2 = num1^num2; num1 = num1^num2; System.out.println("num1:"+num1+",num2:"+num2); /**位运算3 * 不用判断语句,求整数的绝对值 * 后面的运算语句要整体加括号 * a正数:a>>31=0; 0000...0000(32位0) a^0=a * a负数:a>>31=-1; 1111...1111(32位1) a^-1=a 1越多越大意味着离0越近 * a正数:a>>>31=0; 0000...0000 * a负数:a>>>31=1; 0000...0001 * a负数取反加1就是它的绝对值/原码 (a^-1)+1 */ num2 = -20; System.out.println(num2+"的绝对值:"+( (num2^(num2>>31))+(num2>>>31) )); } }
  • 相关阅读:
    前端 时间转换为时间戳 时间戳转时间
    RT, 吞吐量,并发用户数,QPS名词解释
    Bluetooth开发资料的收集
    Day20_学成在线项目就业指导
    Day20_docker相关xml
    Day20_Jenkins安装文档
    八段锦口诀
    Day20_GitLab安装文档
    Day20_GitCommand
    Day20_DevOps
  • 原文地址:https://www.cnblogs.com/ccyzj/p/14508059.html
Copyright © 2011-2022 走看看