zoukankan      html  css  js  c++  java
  • 位运算的技巧

      1 package com.aixuexi.contact;
      2 
      3 public class Helloworld {
      4     public static void main(String[] args) {
      5         System.out.println("helloworld");
      6         System.out.println("helloworld");
      7         System.out.println("helloworld");
      8         System.out.println("helloworld");
      9         
     10         //位运算的技巧
     11 
     12         //1 、判断奇数
     13         System.out.println("=====判断奇数======");
     14         int n = 13;
     15         if (n % 2 == 1) { // 奇数
     16             System.out.println("是个奇数:" + n);    
     17         }
     18         if ((n & 1) == 1) {
     19             System.out.println("是个奇数:" + n);    
     20         }
     21         /*
     22          * 把n用二进制转换的话,只需要判断二级制的最后一位是0 or 1
     23          * 
     24          */
     25         
     26         //2、交换两个数
     27         
     28         //low
     29         System.out.println("====交换两个数=====");
     30         int x = 1, y =2;
     31         int temp = x; 
     32         x = y;
     33         y = temp;
     34         System.out.println(x);
     35         System.out.println(y);
     36         
     37         //高级方法
     38         System.out.println("====高级方法====");
     39         x = x ^ y;
     40         y = x ^ y;
     41         x = x ^ y;
     42         System.out.println(x);
     43         System.out.println(y);
     44         
     45         
     46         // 3、 找出没有重复的数
     47         System.out.println("==找出没有重复的数==");
     48         /*数组中只有一个数出现一次,剩余数都出现两次,找出出现一次的数*/
     49         int[] arr = new int[] {1,2,3,4,5,1,2,3,4};
     50         System.out.println(find(arr));
     51         /*
     52          *  就限于两个数相同 ^ 等于1 
     53          *  ^ 支持交换和结合 所以 1^2^3^4^5^1^2^3^4 = (1^1)^(2^2)^(3^3)^(4^4)^5 
     54         */
     55         
     56         // 4、m 的 n 次方 
     57         System.out.println("==m 的 n 次方 M1 ==");
     58         System.out.println(pow1(3));
     59         
     60         System.out.println("==m 的 n 次方 M2 ==");
     61         System.out.println(pow2(3));
     62         
     63         // 5、找出不大于N的最大的2的幂指数
     64         /*传统方法*/
     65         System.out.println("==找出不大于N的最大的2的幂指数 ==");
     66         System.out.println(findN(6));
     67         
     68         System.out.println(findN2(6));
     69     }
     70     
     71     
     72     
     73     //找出没有重复的数
     74     public static int find(int[] arr) {
     75         int tmp = arr[0];
     76         for (int i = 1; i < arr.length; i++) {
     77             tmp = tmp ^ arr[i];
     78         }
     79         return tmp;
     80     }
     81     
     82     //m 的 n 次方   M1 -- low
     83     public static int pow1(int n) {
     84         int tmp = 1;
     85         for(int i = 1; i <= n; i++) {
     86             tmp = tmp * 2; // m = 2
     87         }
     88         return tmp;
     89     }
     90     //m 的 n 次方   M2 
     91     public static int pow2(int n) {
     92         int sum = 1;
     93         int tmp = 2; // m = 2
     94         while(n != 0) {
     95             if((n & 1) == 1) {
     96                 sum *= tmp;
     97             }
     98             tmp *= tmp;
     99             n = n >> 1;
    100         }
    101         return sum;
    102     }
    103     //找出不大于N的最大的2的幂指数
    104     public static int findN(int n) {
    105         int sum = 1;
    106         while(true) {
    107             if(sum * 2 > n) {
    108                 return sum;
    109             }
    110             sum *= 2;
    111         }
    112     }
    113     
    114     public static int findN2(int n) {
    115         n |= n >> 1;
    116         n |= n >> 2;
    117         n |= n >> 4;
    118         n |= n >> 8;
    119         n |= n >> 16;
    120         
    121         return (n + 1) >> 1;
    122     }
    123 }
  • 相关阅读:
    PHP chr函数 对应的AscII码
    微信小程序:样式,事件
    PHP 实现移动端极光推送(转)
    微信小程序服务器请求和上传数据,上传图片并展示,提交表单完整实例代码附效果图(转)
    大头照上传预览,并操作数据库和删除文件夹中存储的之前的图片;$_SERVER['DOCUMENT_ROOT']上传图片和删除图片的时候不要用绝对路径,可以用这个路径
    thinkphp 条件搜索分页(tp自带Page类)
    asp搭配环境
    html5手机端手指滑动选项卡滚动切换效果(转)
    tp框架实现ajax注册验证
    tp框架链接数据库的基本操作
  • 原文地址:https://www.cnblogs.com/yaozhenhua/p/11172027.html
Copyright © 2011-2022 走看看