关于字符串二进制定点数浮点数与int以及NBCD码转换的问题

关于字符串二进制定点数浮点数与int以及NBCD码转换的问题(代码)

  1. 将十进制数字字符串转化为二进制补码(32位):
public String intToBinary(String numStr) {
   
   
        int num = Integer.parseInt(numStr);        
        if (num == 0) return "00000000000000000000000000000000";  //0单独判读              
        boolean isNeg = false;        
        if (num < 0) {
   
     //负数转正数            
        num = -num;            
        isNeg = true;        
        }        
        StringBuilder temp = new StringBuilder();        
        while (num > 0) {
   
     //转为二进制            
        if (num % 2 == 1) temp.append("1");            
        else temp.append("0");            
        num /= 2;        }        
        String ans = temp.reverse().toString();  //反转,从低位开始计算        
        int len = ans.length();        
        for (int i = 0; i < 32 - len; i++) ans = "0" + ans;        
        if (isNeg) {
   
     //如果是负数那么取反加一            
        ans = oneAdder(negation(ans)).substring(1);        
        }        
        return ans;    
        }

进位判断(第一位判断是否溢出)

private String oneAdder(String operand) {
   
   
        int len = operand.length();        
        StringBuffer temp = new StringBuffer(operand);        
        temp = temp.reverse();//只是将位反转,因为要从低位到高位加一        
        int[] num = new int[len];        
        for (int i = 0; i < len; i++) num[i] = temp.charAt(i) - '0';  // 先转化为反转后对应的int数组        
        int bit = 0x0;        
        int carry = 0x1;        
        char[] res = new char[len];        
        for (int i = 0; i < len; i++) {
   
               
        bit = num[i] ^ carry;            
        carry = num[i] & carry;            
        res[i] = (char) ('0' + bit);  // 显示转化为char        
        }        
        String result = new StringBuffer(new String(res)).reverse
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值