多气象要素百叶箱负数温度转换

该代码段展示了将十进制小数转换为二进制,然后进行特定操作的过程。首先,它将十进制数转换为二进制,检查前八位是否匹配预设模式。如果匹配,它执行二进制减一操作,并对结果取反,再转换回十进制,最终得到一个负数的浮点表示。
摘要由CSDN通过智能技术生成
public static String huoQuYuanMa(String data) {
        //data = "6550.9";
        final String FUHAO = "11111111";
        StringBuilder stringBuilder = new StringBuilder();
        String[] split = data.split("\\.");
        for (String s : split) {
            stringBuilder.append(s);
        }
        String str = String.valueOf(stringBuilder);

        //十进制转换为二进制
        StringBuilder shiJinZhi = new StringBuilder();
        int n = Integer.parseInt(str);
        for (int i = 15; i >= 0; i--) {
            shiJinZhi.append(n >>> i & 1);
        }

        if (shiJinZhi.length() > 8) {
            //获取前八位
            String qianBaWei = String.valueOf(shiJinZhi).substring(0, 8);
            if (FUHAO.equals(qianBaWei)) {
                //从第八位截取到末尾
                String substring = String.valueOf(shiJinZhi).substring(8);
                int i = Integer.parseInt(substring);
                //System.out.println(i);
                //字符串第一个字符最后出现的下标
                int lastIndex = substring.lastIndexOf("1");
                //System.out.println(lastIndex);
                char[] chars = substring.toCharArray();
                chars[lastIndex] = '0';//二进制减一
                //要取反的结果  补码减一的结果
                StringBuilder stringBuilder1 = new StringBuilder();
                for (char aChar : chars) {
                    stringBuilder1.append(aChar);
                }

                //System.out.println(stringBuilder1);
                //将二进制转换为十进制
                int i1 = Integer.parseInt(String.valueOf(stringBuilder1), 2);
                //System.out.println(i1);

                String binary = add(InvertedCode(对i1取反);
                int i2 = Integer.parseInt(binary, 2);
                //System.out.println(i2 - 1);
                double res = (double) (i2 - 1) / 10;
                //System.out.println(res);
                String result = "-" + res;
                //System.out.println(result);
                return result;
            }
        }
        return null;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值