美文网首页
二进制的趣味魔法

二进制的趣味魔法

作者: 掌灬纹 | 来源:发表于2019-01-12 21:02 被阅读0次

    一个个人觉得很有意思的代码,通过用户的五次判断(5个特定的集合数),集合是

    否包含用户生日,如果包含输入1否则输入0,最后即能准确输出用户的准确生日。

    是不是听上去有种魔术的感觉,原理即是利用二进制实现五位数对0~31这32个数的控制

    用我生日举个例子 3-11

    1 2

    代码实现(Java语言)

    import java.util.Scanner;

    public class GuessYourBirthday {

    public static void main(String[] args) {

    String set1 = "1 3 5 7\n"+

                  "9 11 13 15\n"+

                  "17 19 21 23\n"+

                  "25 27 29 31\n";

    String set2 = "2 3 6 7\n"+

                  "10 11 14 15\n"+

                  "18 19 22 23\n"+

                  "26 27 30 31\n";

    String set3 = "4 5 6 7\n"+

                  "12 13 14 15\n"+

                   "20 21 22 23\n"+

                    "28 29 30 31\n";

    String set4 = "8 9 10 11\n"+

                  "12 13 14 15\n"+

                  "24 25 26 27\n"+

                  "28 29 30 31\n";

    String set5 = "16 17 18 19\n"+

                  "20 21 22 23\n"+

                 "24 25 26 27\n"+

                  "28 29 30 301\n";

    ; int day = 0;//最后生日结果

    Scanner sc = new Scanner(System.in);

    int answer = 0 ;

    System.out.println("你的生日是否在以下集合里?");

    System.out.println(set1);

    System.out.println("是请输入1,否则输入0");

    answer = sc.nextInt();

    day += answer*1;

    System.out.println("你的生日是否在以下集合里?");

    System.out.println(set2);

    System.out.println("是请输入1,否则输入0");

    answer = sc.nextInt();

    day += answer*(1<<1);//左移一位

    System.out.println("你的生日是否在以下集合里?");

    System.out.println(set3);

    System.out.println("是请输入1,否则输入0");

    answer = sc.nextInt();

    day += answer*(1<<2);

    System.out.println("你的生日是否在以下集合里?");

    System.out.println(set4);

    System.out.println("是请输入1,否则输入0");

    answer = sc.nextInt();

    day += answer*(1<<3);//乘2的三次方

    System.out.println("你的生日是否在以下集合里?");

    System.out.println(set5);

    System.out.println("是请输入1,否则输入0");

    answer = sc.nextInt();

    day += answer*(1<<4);//乘2的4次方

    System.out.println("输入你生日的月份:(1~12)");

    int mon = sc.nextInt();

    System.out.println("你的生日为:"+mon+"月 "+day+"日");

    }        

    }

    相关文章

      网友评论

          本文标题:二进制的趣味魔法

          本文链接:https://www.haomeiwen.com/subject/smacdqtx.html