`

将键盘输入的数转为二进制形式

阅读更多
import java.util.Scanner;   
  
/**  
 * 将键盘上输入的一个字符串转换成十进制整数,然后打印出这个十进制整数对应的二进制形式。<br>  
 * <br>  
 * 这个程序要考虑输入的字符串不能转换成一个十进制整数的情况,并对转换失败的原因要区分出是数字太大,<br>  
 * 还是其中包含有非数字字符的情况。<br>  
 * 提示:十进制数转二进制数的方式是用这个数除以2,余数就是二进制数的最低位,<br>  
 * 接着再用得到的商作为被除数去除以2,这次得到的余数就是次低位,如此循环,直到被除数为0为止。<br>  
 * 其实,只要明白了打印出一个十进制数的每一位的方式(不断除以10,得到的余数就分别是个位,十位,百位),<br>  
 * 就很容易理解十进制数转二进制数的这种方式。  
 *   
 * @author 享受JAVA(java2000.net)  
 */  
public class T3 {   
  /**  
   * @param args  
   */  
  public static void main(String[] args) {   
    Scanner in = new Scanner(System.in);   
    String str = in.nextLine();   
    int num = 0;   
    try {   
      num = strToInt(str);   
    } catch (NumberFormatException ex) {   
      System.out.println(ex.getMessage());   
      return;   
    }   
    System.out.println("num=" + num);   
    System.out.println("二进制为:" + toBinaryString(num));   
  }   
  
  public static String toBinaryString(int num) {   
    StringBuilder b = new StringBuilder();   
    try {   
      while (num > 0) {   
        b.insert(0, num % 2);   
        num >>>= 1;   
      }   
      return b.toString();   
    } finally {   
      b.delete(0, b.length());   
      b = null;   
    }   
  }   
  
  public static int strToInt(String s) {   
    int result = 0;   
    boolean negative = false;   
    int i = 0, max = s.length();   
    int limit;   
    int multmin;   
    int digit;   
    if (max > 0) {   
      if (s.charAt(0) == '-') {   
        negative = true;   
        limit = Integer.MIN_VALUE;   
        i++;   
      } else {   
        limit = -Integer.MAX_VALUE;   
      }   
      multmin = limit / 10;   
      if (i < max) {   
        digit = Character.digit(s.charAt(i++), 10);   
        if (digit < 0) {   
          throw new NumberFormatException("字符串格式不正确: \"" + s + "\"");   
        } else {   
          result = -digit;   
        }   
      }   
      while (i < max) {   
        // Accumulating negatively avoids surprises near MAX_VALUE   
        digit = Character.digit(s.charAt(i++), 10);   
        if (digit < 0) {   
          throw new NumberFormatException("字符串格式不正确: \"" + s + "\"");   
        }   
        if (result < multmin) {   
          throw new NumberFormatException("数字超过最大允许范围:: \"" + s + "\"");   
        }   
        result *= 10;   
        if (result < limit + digit) {   
          throw new NumberFormatException("数字超过最大允许范围: \"" + s + "\"");   
        }   
        result -= digit;   
      }   
    } else {   
      throw new NumberFormatException("字符串为空: \"" + s + "\"");   
    }   
    if (negative) {   
      if (i > 1) {   
        return result;   
      } else { /* Only got "-" */  
        throw new NumberFormatException("不能只有负号: \"" + s + "\"");   
      }   
    } else {   
      return -result;   
    }   
  }   
}  


注解
StringBuffer 上的主要操作是 append 和 insert 方法,可重载这些方法,以接受任意类型的数据。每个方法都能有效地将给定的数据转换成字符串,然后将该字符串的字符添加或插入到字符串缓冲区中。append 方法始终将这些字符添加到缓冲区的末端;而 insert 方法则在指定的点添加字符。
分享到:
评论

相关推荐

    编写一个程序,它先将键盘上输入的一个字符串转换成十进制整数

    编写一个程序,它先将键盘上输入的一个字符串转换成十进制整数,代码

    键盘录入数据的转换与显示

    因为要将程序在唐都仪器上运行,输入的两个数的和要以十进制形式通过可编程接口芯片8255A在LED数码管上显示,所以,我直接在程序里输入了两个五位十进制数,然后将这两个数转换为二进制后存放在AX中,即先将其转换...

    将两个多位十进制数相加,要求加数和被加数均以ASCII码形式各自顺序存放以DATA1和DATA2为首的5个内存单元中(低位在前),结果送回DATA1处

    根据给定文件的信息,本文将详细解析如何在汇编语言环境下实现两个多位十进制数的相加操作。本例中的关键在于理解ASCII码表示的十进制数、加法运算以及结果的处理。 ### 一、问题背景 在计算机编程中,经常需要对...

    ASCII及十六进制转换工具《建》

    (2)将二进制形式的IP地址与子网掩码做“与”运算,将答案化为十进制便得到网络地址; (3)将二进制形式的子网掩码取“反”; (4)将取“反”后的子网掩码与IP地址做“与”运算,将答案化为十进制便得到主机地址...

    十进制与十六进制的转换

    - 十进制转十六进制通常先转为二进制,因为十六进制是二进制的压缩形式,每四位二进制对应一位十六进制。 - 具体步骤包括: - 将十进制数除以16,得到商和余数。 - 余数就是十六进制的最低位,接着用商继续除以...

    第二章 计算机基础知识习题与答案 (2).pdf

    22. **进制转换**:例如,十进制数58转为二进制为111010,小数0.6875转为二进制为0.1011。 23. **接口类型**:nS-232C是标准串行接口,用于连接不同设备。 24. **存储器类型**:ROM是只读存储器,其数据在制造时...

    计算机基础题目及答案.pdf

    13. **十进制转二进制**:210转为二进制是1101010,不是11101011。 14. **二进制选择**:计算机采用二进制主要是因为它的逻辑简单,便于电子元件处理。 15. **软盘存储**:软盘按磁道和扇区组织数据。 16. **软盘...

    十四位数仿真科学计算器 2.14 绿色版(语音型含注册码).

    显示屏数字可随时转换为下列形式进行计算:十六进制、十进制、八进制、二进制、人民币中文大写形式、人民币数字形式(例如:1435.75、人民币壹仟肆佰叁拾伍圆柒角伍分、¥1435.75)。以上各种转换与计算结果可选择...

    十四位数仿真科学计算器(语音型)

    显示屏数字可随时转换为下列形式进行计算:十六进制、十进制、八进制、二进制、人民币中文大写形式、人民币数字形式例如:1435.75、人民币壹仟肆佰叁拾伍圆柒角伍分、¥1435.75)。以上各种转换与计算结果可选择是否...

    仿真语音计算器v1.8

    显示屏数字可随时转换为下列形式进行计算:十六进制、十进制、八进制、二进制、人民币中文大写形式、人民币数字形式例如:1435.75、人民币壹仟肆佰叁拾伍圆柒角伍分、¥1435.75)。以上各种转换与计算结果可选择是否...

    仿真科学计算器(语音型) V2.14

    、八进制、二进制、人民币中文大写形式、人民币数字形式(例如:1435.75、人民币壹仟肆佰 叁拾伍圆柒角伍分、¥1435.75)。以上各种转换与计算结果可选择是否自动存入WINDOWS剪贴 板,并可自动输出在其它程序窗口的...

    十四位数仿真科学计算器(语音型)2.11

    显示屏数字可随时转换为下列形式进行计算:十六进制、十进制、八进制、二进制、人民币中文大写形式、人民币数字形式(例如:1435.75、人民币壹仟肆佰叁拾伍圆柒角伍分、¥1435.75)。以上各种转换与计算结果可选择...

    仿真科学计算器(语音型)

    5.显示屏数字可随时转换为十六进制、十进制、八进制、二进制形式进行计算,以上各种转换与计算结果可选择是否自动存入WINDOWS剪贴板,并可自动输出在其它程序窗口的当前光标位置,省去了按”Ctrl+V”的不便。...

    语音计算器(科学计算器软件)v2.14免费版.rar

    显示屏数字可随时转换为下列形式进行计算:十六进制、十进制、八进制、二进制、人民币中文大写形式、人民币数字形式。以上各种转换与计算结果可选择是否自动存入WINDOWS剪贴板,并可自动输出在其它程序窗口的当前...

    计算机基础各章习题答案.pdf

    3. **信息存储形式**:在计算机内部,所有的信息都以二进制码(0和1)的形式存储和处理,这是计算机的基础。 4. **非系统盘错误**:"Non-system disk or disk error Replace and strike any key when ready." 这个...

    2021年计算机一级考试试题题库有答案.doc

    17. Excel单元格输入:单元格可以输入255个非数字字符,过长数字会自动转为科学记数形式,可以强制换行,但无法输入过长文本或极小数值。 18. 自动填充序列:"第一类、第二类、第三类、……"这样的序列不能直接自动...

    语音计算器下载 绿色版

    显示屏数字可随时转换为下列形式进行计算:十六进制、十进制、八进制、二进制、人民币中文大写形式、人民币数字形式(例如:1435.75、人民币壹仟肆佰叁拾伍圆柒角伍分、¥1435.75)。以上各种转换与计算结果可选择...

    大学生统考计算机一级考试试题题库[整理].doc

    9. **网络协议与Web访问**:FTP是文件传输协议,访问Web站点可以输入IP地址或域名,传输速率通常指的是每秒传输的二进制位数。 10. **存储器存取速度**:Cache(高速缓存)&gt;主存&gt;硬盘,这是按照存取速度从快到慢的...

    高二会考计算机基础知识().pdf

    11. **进制转换**:计算机中的计算器可以进行不同进制之间的转换,例如从十进制转为二进制。 12. **微机组件**:微处理器不包含FO接口,而是包含控制器和运算器。 13. **非主要性能指标**:硬盘容量不是衡量计算机...

Global site tag (gtag.js) - Google Analytics