2的指数算法唯一算包含信息

来源:互联网 发布:linux的认识和理解 编辑:程序博客网 时间:2024/05/16 11:15

需求:

算法映射:1=人,2=名,4=性,8=别,16=无,32=天,... ,1024=就,......

通过给你一个参数1027判断包括哪些字


java 方法实现如下:


import java.text.DateFormat;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;




public class alertModeFunction {
public static void main(String[] args) throws ParseException {
   
//int    alert_mode=3075;
int    alert_mode=1027;
List<Integer>   arraylist = new ArrayList<Integer>();
int    mod = 1;
int    oneAlertMode = 0;
int    alert_mode_in=0;


         while (alert_mode > 0) {
           alert_mode_in = alert_mode - mod;
           if (alert_mode_in ==  0) {
               oneAlertMode = mod;
           } else {
               while (alert_mode_in >= 0) {
                   mod = mod * 2;
                   alert_mode_in = alert_mode - mod;
               }
               oneAlertMode = mod / 2;
           }
           alert_mode = alert_mode - oneAlertMode;
           arraylist.add(oneAlertMode);
           mod = 1;
          }
       
     for(int i=0;i<arraylist.size();i++){
     System.out.println("===>>>"+arraylist.get(i).toString());
     }
 }


}


输出:

===>>>1024
===>>>2
===>>>1

0 0