美文网首页
将一个数字字符串变为八位二进制数然后相加,最后结果为一个二进制数

将一个数字字符串变为八位二进制数然后相加,最后结果为一个二进制数

作者: 大头tb | 来源:发表于2020-04-06 12:53 被阅读0次

    //测试字符串

    String xxx ="1234";

    //将字符串转换为字符数组

    char[] arr = xxx.toCharArray();

    //得到数组长度,避免多次调用

    int len = arr.length;

    //创建一个字符串数组,数组长度为测试字符串“xxx”的长度

    String[] strings =new String[len];

    //得到每一个字符串的二进制数,并将二进制数补全为八位

    for (int i =0; i < len; i++) {

        String temp = Integer.toBinaryString(Character.getNumericValue(arr[i]));

        strings[i] = temp;

        //是在这里补全的

    if (temp.length() <8) {

            for (int j =0; j <8 - temp.length(); j++) {

                strings[i] ="0" + strings[i];

            }

        }

    }

    //新建一个StringBuilder用于存储最后相加的结果,这样可以使用append方法

    StringBuilder result =new StringBuilder();

    //转换为string对象

    String xxxx = result.toString();

    //System.out.println(xxxx);

    for (int i =0; i < strings.length; i++) {

        //取两个字符串进行相加

    String a = xxxx;

        String b = strings[i];

        int al = a.length() -1;

        int bl = b.length() -1;

        int carry =0;//这个‘carry’代表进位

        //m每次对应位置相加并判断是否需要进位(倒着进行)

    while (al >=0 || bl >=0) {

            //每次sum都要继承之前的进位carry,如果carry为0表示有进位,为1表示没有进位

    int sum = carry;

            if (al >=0) {

                sum += (a.charAt(al) -'0');

                al--;

            }

            if (bl >=0) {

                sum += (b.charAt(bl) -'0');

                bl--;

            }

            System.out.println("------" + sum);

            result.append(sum %2);  //相加结果

    carry = sum /2;        //进位,如果是1那么carry=0,如果是2则要进位给下面一位+1

    }

        if (carry !=0)              //都相加完了,还要进位的情况

    {

            result.append(1);

        }

        System.out.println(i +":" + result.substring(0,8));

        xxxx = result.reverse().toString().substring(0,8);

        System.out.println(i +":" + result.toString());  //先反转,再输出

    result.delete(0, result.length());

    }

    System.out.println("last:" + Integer.parseInt(xxxx));

    相关文章

      网友评论

          本文标题:将一个数字字符串变为八位二进制数然后相加,最后结果为一个二进制数

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