精华内容
下载资源
问答
  • 本文目錄進制介紹二进制转进制八进制转十进制十六进制十进制十进制转二进制十进制八进制十进制十六进制二进制转八进制二进制转十六进制八进制转二进制十六进制转二进制 進制介紹 对于整数,有四种表示方式:...

    本篇文章以 Java 代码做示范。

    進制介紹

    对于整数,有四种表示方式:

    • 二进制:0,1,满 2 进 1。以 0b 或 0B 开头
    • 十进制:0-9,满 10 进 1
    • 八进制:0-7,满 8 进 1。以数字 0 开头
    • 十六进制:0-9及A(10)-F(15) 满 16 进 1。以 0x 或 0X 开头表示。此处的 A-F不区分大小写。
    int n1 = 0b1010; // 二进制
    int n2 = 1010; // 十进制
    int n3 = 01010; // 八进制
    int n4 = 0x10101; // 十六进制
    System.out.println(n1+" "+n2+" "+n3+" "+n4); // 10 1010 520 65793
    
    十进制 二进制 八进制 十六进制
    0 0 0 0
    1 1 1 1
    2 10 2 2
    3 11 3 3
    4 100 4 4
    5 101 5 5
    6 110 6 6
    7 111 7 7
    8 1000 10 8
    9 1001 11 9
    10 1010 12 A
    11 1011 13 B
    12 1100 14 C
    13 1101 15 D
    14 1110 16 E
    15 1111 17 F
    16 10000 20 10
    17 10001 21 11

    二进制转十进制

    规则:从最低位(右边)开始,将每个位上的数提取出来,乘以 2 的(位数 -1)次方,然后求和。
    例子:请将 0b1011 转成十进制的数。

    0b1011 = 1 * 2(1-1) + 1 * 2(2-1) + 0 * 2(3-1) + 1 * 2(4-1) = 1 * 1 + 1 * 2 + 0 + 1 * 8 = 11

    你可以打开windows自带小算盘,切换成程序设计人员模式,然后选择二进制输出 1011 左侧可以直接看到其他进制的转换结果。

    在这里插入图片描述

    八进制转十进制

    规则:从最低位(右边)开始,将每个位上的数提取出来,乘以 8 的(位数 -1)次方,然后求和。
    例子:请将 0234 转成十进制的数。

    0234 = 4 * 80 + 3 * 81 + 2 * 82 = 4 + 24 + 128 = 156

    在这里插入图片描述

    十六进制转十进制

    规则:从最低位(右边)开始,将每个位上的数提取出来,乘以 16 的(位数 -1)次方,然后求和。
    例子:请将 0x23A 转成十进制的数。

    0x23A = 10 * 160 + 3 * 161 + 2 * 162 = 10 + 48 + 512 = 570

    在这里插入图片描述

    System.out.println(0x23A); // 570
    

    既然学会了这三种进制转换为十进制的方法,那我们来练习:

    • 0b110001100 转为十进制
    • 02456 转为十进制
    • 0xA45 转为十进制

    (尽量自己去计算,不要直接使用代码去得到结果。)

    答案:

    System.out.println(0b110001100); // 396
    System.out.println(02456); // 1326
    System.out.println(0xA45); // 2629
    

    十进制转二进制

    规则:将该数不断除以2,直到商为 0 为止,然后将每步得到的余数倒过来,就是对应的二进制。
    例子:请将 34 转成二进制的数。

    34 / 2 = 17 … 0

    17 / 2 = 8 … 1

    8 / 2 = 4 … 0

    4 / 2 = 2 … 0

    2 / 2 = 1 … 0

    1 / 2 = 0 … 1

    将得到的余数反过来得到 0b100010
    而存储单位是 1 byte ( 8 bit ),因此需要往前补 0 => 0010 0010

    在这里插入图片描述

    十进制转八进制

    规则:将该数不断除以8,直到商为 0 为止,然后将每步得到的余数倒过来,就是对应的八进制。

    例子:请将 131 转成八进制的数。

    131 / 8 = 16 … 3

    16 / 8 = 2 … 0

    2 / 8 = 0 … 2

    因此可以得到 131 转成八进制为 0203

    在这里插入图片描述

    十进制转十六进制

    规则:将该数不断除以16,直到商为 0 为止,然后将每步得到的余数倒过来,就是对应的十六进制。
    例子:请将 237 转成十六进制的数。

    237 / 16 = 14 … 13(D)

    14 / 16 = 0 … 14(E)

    237 得到的十六进制为 0xED

    在这里插入图片描述
    十进制的转换说完了,照样来做个练习题吧:

    • 123 转为 二进制
    • 678 转为 八进制
    • 8912 转为 十六进制

    123 转二进制 为例,代码如下(以 1 byte 输出):

    public class App {
        public static void main(String[] args) {
            int quotient = 0; //商
            String output = " ";
            int number = 123;
            for(int n = 1; n <= 2; n++) {
                for(int i = 1; i <= 4; i++) {
                    int remainder = number % 2; //余数
                    quotient = number / 2;
                    number = quotient;
                    output = remainder + output;
                }
                output = " " + output;
            }
            System.out.println(output); // 0111 1011
        }
    }
    

    678 转八进制 为例,代码如下(以 1 byte 输出):

    public class App {
        public static void main(String[] args) {
            int quotient = 0; //商
            String output = " ";
            int number = 678;
            for(int n = 1; n <= 2; n++) {
                for(int i = 1; i <= 4; i++) {
                    int remainder = number % 8; //余数
                    quotient = number / 8;
                    number = quotient;
                    output = remainder + output;
                }
                output = " " + output;
            }
            System.out.println(output); // 0000 1246
        }
    }
    

    8912 转十六进制 为例,代码如下(以 1 byte 输出):

    public class App {
        public static void main(String[] args) {
            int quotient = 0; //商
            String output = " ";
            int number = 8912;
            for(int n = 1; n <= 2; n++) {
                for(int i = 1; i <= 4; i++) {
                    String remainder = ""+number % 16; //余数
                    quotient = number / 16;
                    int temp = Integer.parseInt(remainder);
                    if(temp == 10) remainder = "A";
                    else if(temp == 11) remainder = "B";
                    else if(temp == 12) remainder = "C";
                    else if(temp == 13) remainder = "D";
                    else if(temp == 14) remainder = "E";
                    else if(temp == 15) remainder = "F";
                    number = quotient;
                    output = remainder + output;
                }
                output = " " + output;
            }
            System.out.println(output); // 0000 22D0
        }
    }
    

    其实有 Integer.toHexString()、Integer.toOctalString()、Integer.toBinaryString()…等方法可以去用,这边就是想展现一下换算过程,参考就好。

    二进制转八进制

    规则:从低位开始,将二进制数每三位一组,转成对应的八进制数即可。

    例子:请将 0b11010101 转成八进制的数。

    每三位分一组:11 010 101

    11 010 101 => 11(3)010(2)101(5) => 325

    在这里插入图片描述

    二进制转十六进制

    规则:从低位开始,将二进制数每四位一组,转成对应的十六进制数即可。

    例子:请将 0b11010101 转成八进制的数。

    每四位分一组:1101 0101

    1101 0101 => 1101(D)0101(5) => 0xD5

    练习:

    • 0b11100101 转为 八进制
    • 0b1110010110 转为 十六进制
    System.out.println(Integer.toOctalString(0b11100101)); // 345
    System.out.println(Integer.toHexString(0b1110010110)); // 396
    

    八进制转二进制

    规则:将八进制数每 1 位,转成对应的一个 3 位的二进制数即可。

    例子:请将 0237 转成二进制的数。

    0237 => 02(010)3(011)7(111) => 010 011 111

    为符合 1 byte 存储 010 011 111 => 1001 1111

    在这里插入图片描述

    十六进制转二进制

    规则:将十六进制数每 1 位,转成对应的一个 4 位的二进制数即可。

    例子:请将 0x23B 转成二进制的数。

    0x23B => 0x2(0010)3(0011)B(1011) => 0010 0011 1011

    在这里插入图片描述

    练习:

    • 01230 转为 二进制
    • 0xAB29 转为 二进制
    System.out.println(Integer.toBinaryString(01230)); // 0010 1001 1000
    System.out.println(Integer.toBinaryString(0xAB29)); // 1010 1011 0010 1001
    
    展开全文
  • 搞定进制转换(1)二进制转八进制和十六进制(2)十进制转二进制数注意!!! 1.进位计数法       所谓进位计数法是一种计数方法,咱们最常用的莫过于十进制了,除此之外还有...


    1.进位计数法

          所谓进位计数法是一种计数方法,咱们最常用的莫过于十进制了,除此之外还有八进制、十六进制等。
    这里不得不提几个概念术语:

    • 基数:比如说十进制、八进制和十六进制,它们的基数分别为10(0~9)、8(0~7)、16(0~15)
    • 数位:比如二进制数1010,这里就有4个数位,从高位到低位依次的数码值为1、0、1、1
    • 数码:比如八进制,那么数码,即数码值的范围为(0~7)
    • 基数和数码的关系:每个数位所用到的不同数码的个数称为基数
    • 位权:每个数码所表示的数值等于该数码值乘以一个与它所在位有关的常数,这个常数称为位权。

    2.两题搞定进制转换

    (1)二进制转八进制和十六进制

    在这里插入图片描述

    (2)十进制转二进制数

    十进制转N进制数,比较常用的方法是基数乘除法,这种方法分两步骤:整数部分用除基取余法,小数部分采用乘基取整法,最后将整数与小数部分拼接起来。

    在这里插入图片描述

    注意!!!

    不是每一个十进制小数都可以准确的用二进制表示,比如:0.3转换为二进制数,无论经过多少次乘二取整无法获得精确的结果。但任意一个二进制小数都可以用十进制小数表示!!!

    展开全文
  • 进制间转换 进制转换 二进制与十进制 八进制 十六进制转换
  • 蓝桥杯题库:十六进制转八进制

    万次阅读 2020-05-06 11:35:20
     给定n个十六进制正整数,输出它们对应的八进制数。 输入格式  输入的第一行为一个正整数n (1<=n<=10)。  接下来n行,每行一个由09、大写字母AF组成的字符串,表示要转换的十六进制正整数,每个十六进制...

    问题描述
      给定n个十六进制正整数,输出它们对应的八进制数。

    输入格式
      输入的第一行为一个正整数n (1<=n<=10)。
      接下来n行,每行一个由09、大写字母AF组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。

    输出格式
      输出n行,每行为输入对应的八进制正整数。

    【注意】
      输入的十六进制数不会有前导0,比如012A。
      输出的八进制数也不能有前导0。

    样例输入
      2
      39
      123ABC

    样例输出
      71
      4435274

    思路:刚开始想得是先转换成十进制,但是字符串长度太大了。所以先转化成二进制,转化成二进制之后,如果字符串长度不是3的倍数,就在前面补0,每三位二进制数化为一个八进制数即可。

    AC代码:

    #include<bits/stdc++.h>
    using namespace std;
    
    int n;
    string res,ans;
    stack<int> s,t;
    string binary[]={"0000","0001","0010","0011","0100","0101","0110","0111","1000","1001","1010",
    "1011","1100","1101","1110","1111"};  //先定义好0-16的二进制数 
    map<string,string> a;
    
    void init() {
    	a["000"]="0";    //二八转换 
    	a["001"]="1";
    	a["010"]="2";
    	a["011"]="3";
    	a["100"]="4";
    	a["101"]="5";
    	a["110"]="6";
    	a["111"]="7";
    }
    void converse(string str) {
    	res="";
    	ans="";
    	int cur;
    	for(int i=0;i<str.length();i++) {
    		if(str[i]>='0'&&str[i]<='9') {
    			cur=(int)(str[i]-48);
    		}else {
    			cur=(int)(str[i]-55);
    		}
    		res+=binary[cur];   //转成二进制 
    	}
    	int n=res.length();
    	int x=n%3;
    	if(x==1) {
    		res="00"+res;   //补0
    	}else if(x==2) {
    		res="0"+res;
    	}
    	for(int i=0;i<res.length();i+=3) {
    		ans+=a[res.substr(i,3)];   //每三位转成一位八进制数 
    	}
    	int i=0;
    	for(i=0;i<ans.length();i++) {
    		if(ans[i]!='0') {   //注意不能输出前导0 
    			break;
    		}
    	}
    	ans.erase(0,i);
    	cout<<ans<<endl;
    }
    
    int main() {
    	init();
    	int n;
    	cin>>n;
    	string str;
    	for(int i=1;i<=n;i++) {
    		cin>>str;
    		converse(str);
    	}
    	return 0;
    }
    
    
    展开全文
  • 蓝桥杯基础练习-进制转换(十六进制转八进制+十六进制十进制+十进制十六进制) 一、十六进制转八进制 试题 基础练习 十六进制转八进制 资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述  给定n个十六进制...

    蓝桥杯基础练习-进制转换(十六进制转八进制+十六进制转十进制+十进制转十六进制)
    一、十六进制转八进制

    试题 基础练习 十六进制转八进制 
    资源限制
    时间限制:1.0s   内存限制:512.0MB
    问题描述
      给定n个十六进制正整数,输出它们对应的八进制数。
    
    输入格式
      输入的第一行为一个正整数n (1<=n<=10)。
      接下来n行,每行一个由0~9、大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。
    
    输出格式
      输出n行,每行为输入对应的八进制正整数。
    
      【注意】
      输入的十六进制数不会有前导0,比如012A。
      输出的八进制数也不能有前导0。
    
    样例输入
      2
      39
      123ABC
    
    样例输出
      71
      4435274
    
      【提示】
      先将十六进制数转换成某进制数,再由某进制数转换成八进制。
    

    AC代码:

    #include<bits/stdc++.h>
    using namespace std;
    string a[16]={"0000","0001","0010","0011","0100","0101","0110","0111","1000","1001","1010","1011","1100","1101","1110","1111"};
    string tran(char x)
    {
        string cnt="";
        switch (x)
        {
            case '0':cnt+=a[0];break;
            case '1':cnt+=a[1];break;
            case '2':cnt+=a[2];break;
            case '3':cnt+=a[3];break;
            case '4':cnt+=a[4];break;
            case '5':cnt+=a[5];break;
            case '6':cnt+=a[6];break;
            case '7':cnt+=a[7];break;
            case '8':cnt+=a[8];break;
            case '9':cnt+=a[9];break;
            case 'A':cnt+=a[10];break;
            case 'B':cnt+=a[11];break;
            case 'C':cnt+=a[12];break;
            case 'D':cnt+=a[13];break;
            case 'E':cnt+=a[14];break;
            case 'F':cnt+=a[15];break;
            default:break;
        }
        return cnt;
    }
    int main(){
        int n;
        cin>>n;
        string str[11];
        for(int i=0;i<n;i++)
        {
            cin>>str[i];
            string ans=""; //存放二进制字符串
            int len=str[i].length();
            for(int j=0;j<len;j++)
            {
                ans+=tran(str[i][j]);
            }
            int len2=ans.length();
            if(len2%3==1)
            {
                ans="00"+ans;
            }
            else if(len2%3==2)
            {
                ans="0"+ans;
            }
            len2=ans.length();
            string cnt=""; //存放八进制字符串
            for(int j=0;j<len2;j+=3)
            {
                int k=(ans[j]-'0')*pow(2,2)+(ans[j+1]-'0')*pow(2,1)+(ans[j+2]-'0')*pow(2,0);
                cnt+=(k+'0');
            }
            cnt.erase(0,cnt.find_first_not_of('0'));
            cout<<cnt<<endl;
        }
     system("pause");
     return 0;
    }
    
    

    二、十六进制转十进制

    试题 基础练习 十六进制转十进制  
    资源限制
    时间限制:1.0s   内存限制:512.0MB
    问题描述
      从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
      注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
    样例输入
    FFFF
    样例输出
    65535
    

    AC代码:

    #include<bits/stdc++.h>
    using namespace std;
    int tran(char x)
    {
        int ans=0;
        switch(x)
        {
            case '0':ans=0;break;
            case '1':ans=1;break;
            case '2':ans=2;break;
            case '3':ans=3;break;
            case '4':ans=4;break;
            case '5':ans=5;break;
            case '6':ans=6;break;
            case '7':ans=7;break;
            case '8':ans=8;break;
            case '9':ans=9;break;
            case 'A':ans=10;break;
            case 'B':ans=11;break;
            case 'C':ans=12;break;
            case 'D':ans=13;break;
            case 'E':ans=14;break;
            case 'F':ans=15;break;
        }
        return ans;
    }
    int main(){
        string str;
        int a[100]={0};
        cin>>str;
        int len=str.length();
        long long int sum=0;
        for(int i=len-1;i>=0;i--)
        {
            sum+=tran(str[i])*pow(16,len-i-1);
        }
        cout<<sum<<endl;
        system("pause");
        return 0;
    }
    
    

    三、十进制转十六进制

    试题 基础练习 十进制转十六进制
    资源限制
    时间限制:1.0s   内存限制:512.0MB
    问题描述
      十六进制数是在程序设计时经常要使用到的一种整数的表示方式。它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16个符号,分别表示十进制数的015。十六进制的计数方法是满161,所以十进制数16在十六进制中是10,而十进制的17在十六进制中是11,以此类推,十进制的30在十六进制中是1E。
      给出一个非负整数,将它表示成十六进制的形式。
    输入格式
      输入包含一个非负整数a,表示要转换的数。0<=a<=2147483647
    输出格式
      输出这个整数的16进制表示
    样例输入
    30
    样例输出
    1E
    

    AC代码:

    #include<bits/stdc++.h>
    using namespace std;
    char a[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
    int main(){
        long long int n;
        cin>>n;
        long long int t=abs(n);
        string str="";
        if(t==0)
        {
            cout<<"0"<<endl;return 0;
        }
        while(t!=0)
        {
            int k=t%16;
            str=a[k]+str;
            t/=16;
        }
        cout<<str<<endl;
        //system("pause");
        return 0;
    }
    
    
    展开全文
  • 数制及相互转换一、单选1、下列数据中数值最小的是A、01110000BB、249DC、125QD、AAH2、下列数据中数值最大的是A、3FHB、64DC、77QD、111110B3、下列数据中数值最大的是A、100HB、100DC、100QD、100B4、十进制数24...
  • 试题 基础练习 十六进制转八进制 import java.util.Scanner; public class Main { // TODO Auto-generated method stub //第一步:十六进制转换二进制。 //第二部:二进制转换八进制。 Scanner scn = new Scanner...
  • 十进制转二进制 多举几个例子(先谢了。)十进制转二进制简单的来讲,就是把一个十进制的数÷2,一直÷,直到不能除了,就像是1÷2,在十进制转二进制的时候,它的答案为0,没有余数就写0,然后把前面的余数全部合并在...
  • #Python3 实例--Python 十进制转二进制八进制、十六进制: print("Python3 实例--Python 十进制转二进制八进制、十六进制:") #原则:如果一个n位正整数等于其各位数字的n次方之和,则称该数为阿姆斯特朗数。 ...
  • 二进制转八进制 八进制、十六进制和十进制之间的转换可通过二进制作为中介。 十进制小数转二进制小数 乘不尽的小数进制转换 0.8、0.6、0.2... ...一些数字在进制之间的转化过程中确实存在麻烦。 就比如0.8的...
  • 八进制二进制3.1对应关系3.2举例一:八进制56转换为二进制3.3举例二:二进制100111010 转换为八进制4.八进制与十进制4.1对应关系+举例一:八进制1111转换为十进制4.2举例二:十进制64转换为八进制5.十六进制3333与...
  • 急求~先把它转换成为 10进制 变成90 变180 然后再转换成为2进制 10110100我看了一下像是一道二进制 有谁知道答案帮帮忙 谢谢了 问着五个灯泡最.简便算法:111111=1000000-1(二进制)1000000(二进制)=1*2的六次方=...
  • Java进制转换之十六进制转八进制

    千次阅读 2018-03-12 10:36:52
    基础练习 十六进制转八进制 时间限制:1.0s 内存限制:512.0MB 问题描述 给定n个十六进制正整数,输出它们对应的八进制数。输入格式 输入的第一行为一个正整数n (1&lt;=n&lt;=10)。 接下来n行,每行一...
  • 进制转换是人们利用符号来计数的方法,包含很多种数字转换。进制转换由一组数码符号和两个基本因素(“基”与“权”)构成。 ...▪ 十进制--->二进制 ...▪ 二进制--->十进制 ...▪ 八进制--->二进制
  • 本课程内容如下: 第1节 二进制及十进制的由来 第2节 二进制、十进制、八进制、十六进制的表示方法 第3节 二进制和十进制之间的相互转换 第4节 二进制八进制之间的相互转换 第5节 二进制和十六进制之间的相互转换 ...
  • 十六进制转八进制(浅显易懂)

    千次阅读 多人点赞 2019-03-02 13:09:57
    十六进制转八进制 #分析+算法实现+代码+测试数据 #技巧:分析+处理+调试(大不了就调试) 分析 这个是蓝桥杯的一道练习,对于十六进制转八...要想把十六进制八进制,首先想到把十六进制二进制成...
  • 蓝桥杯 试题 基础设计 十六进制转八进制

    千次阅读 多人点赞 2021-01-21 12:35:30
    蓝桥杯 基础试题 十六进制转八进制 题目描述: 给定n个十六进制正整数,输出它们对应的八进制数。 输入格式 输入的第一行为一个正整数n (1<=n<=10)。接下来n行,每行一个由0到9,A到F组成的字符串,...
  • 试题 基础练习 十六进制转八进制 资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述  给定n个十六进制正整数,输出它们对应的八进制数。 输入格式  输入的第一行为一个正整数n (1<=n<=10)。  接下来n...
  • 十六进制转八进制

    2018-03-28 18:56:08
    应该都会什么十进制转八进制转二进制(十进制以下),但是怎么呢十六进制呢?用十六进制转八进制十进制,那就比平常的麻烦多了。 先讨论怎么用十进制十进制以下的数,很简单就是用While语句一步步的存到...
  • Java实现蓝桥杯十六进制转八进制

    万次阅读 多人点赞 2019-06-06 20:54:50
    基础练习 十六进制转八进制 时间限制:1.0s 内存限制:512.0MB 提交此 锦囊1 锦囊2 问题描述  给定n个十六进制正整数,输出它们对应的八进制数。 输入格式  输入的第一行为一个正整数n (1<=n<=10)。  ...
  • 本周做算法的时候遇到一个进制的转换问题,就重新温习了一下进制数的转换,具体可以参考下面这篇文章...2. 八进制转十进制 方法类似于二进制转十进制,只不过是每一位上的数字乘以8的x次幂,x从0开始,从右向左开...
  • 基础练习 十六进制转八进制 时间限制:1.0s 内存限制:512.0MB 问题描述  给定n个十六进制正整数,输出它们对应的八进制数。 输入格式  输入的第一行为一个正整数n (1&lt;=n&lt;=10)。  接下来n行,每...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 38,889
精华内容 15,555
关键字:

二进制转八进制的题