zoukankan      html  css  js  c++  java
  • 十进制与二进制之间的转换

    十进制转二进制

    ① 整数部分
    方法:除2取余法,即每次将整数部分除以2,余数为该位权上的数,而商继续除以2,余数又为上一个位权上的数,这个步骤一直持续下去,直到商为0为止,最后读数时候,从最后一个余数读起,一直到最前面的一个余数。下面举例:
    例:将十进制的168转换为二进制

    得出结果 将十进制的168转换为二进制,(10101000)2
    分析:第一步,将168除以2,商84,余数为0。
    第二步,将商84除以2,商42余数为0。
    第三步,将商42除以2,商21余数为0。
    第四步,将商21除以2,商10余数为1。
    第五步,将商10除以2,商5余数为0。
    第六步,将商5除以2,商2余数为1。
    第七步,将商2除以2,商1余数为0。
    第八步,将商1除以2,商0余数为1。
    第九步,读数,因为最后一位是经过多次除以2才得到的,因此它是最高位,读数字从最后的余数向前读,即10101000

     1     public static void main(String[] args) {
     2         int n = 168;
     3         String result = "";
     4         boolean minus = false;
     5         //如果该数字为负数,那么进行该负数+1之后的绝对值的二进制码的对应位取反,然后将它保存在result结果中
     6         if(n < 0){
     7             minus = true;
     8             n = Math.abs(n + 1);
     9         }
    10         while(true){
    11             int remainder = (!minus && n % 2 == 0) || (minus && n % 2 == 1) ? 0 : 1;
    12 
    13             //将余数保存在结果中
    14             result = remainder + result;
    15             n /= 2;
    16 
    17             if(n == 0){
    18                 break;
    19             }
    20         }
    21         //判断是否为负数,如果是负数,那么前面所有位补1
    22         if(minus){
    23             n = result.length();
    24             for(int i = 1; i <= 32 - n; i++){
    25                 result = 1 + result;
    26             }
    27         }
    28         System.out.println(result);//10101000
    29     }

    参考:http://www.cnblogs.com/lds85930/archive/2007/09/19/897912.html 

    参考:http://blog.csdn.net/qq_24696917/article/details/51912706

    『愿你我既可以朝九晚五,又能够浪迹天涯』
  • 相关阅读:
    php
    php
    linux 网络管理基础 OSI ISO IOS的区别
    Linux 添加交换分区的步骤
    linux 命令
    linux命令
    linux 命令
    linux 命令
    Linux命令
    linux命令- 挂载命令 mount
  • 原文地址:https://www.cnblogs.com/zjwwljty/p/7613905.html
Copyright © 2011-2022 走看看