精华内容
下载资源
问答
  • 10:十进制转十六进制 ...十六进制的计数方法是满16进1,所以十进制数16在十六进制中是10,而十进制的17在十六进制中是11,以此类推,十进制的30在十六进制中是1E。  给出一个非负整数,将它表示成十六进制的形...

    10:十进制转十六进制

    问题描述:

      十六进制数是在程序设计时经常要使用到的一种整数的表示方式。它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16个符号,分别表示十进制数的0至15。十六进制的计数方法是满16进1,所以十进制数16在十六进制中是10,而十进制的17在十六进制中是11,以此类推,十进制的30在十六进制中是1E。
      给出一个非负整数,将它表示成十六进制的形式。

    输入格式:输入包含一个非负整数a,表示要转换的数。0<=a<=2147483647

    输出格式:输出这个整数的16进制表示

    样例输入:

            30

    样例输出

            1E

    ----------------------------------------------------

    思路:

           十进制转换为k进制可采用除k取余法。

           需要注意的是:这里越早得到的数字其数位越低,因此应对得到的字符串进行倒置处理。

    代码示例:

    import java.util.*;
    
    public class Main {
    	public static void main(String[] args) {
    		Scanner in = new Scanner(System.in);
    		long n = in.nextLong();
    		in.close();
    		
            // 用数组保存十六进制下0-15相应的字符
    		char[] a = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
    		
    		StringBuilder s = new StringBuilder();
    		
    		if (n == 0)
    			s.append("0");
    		
    		while (n != 0) {
    			s.append(a[(int)n%16]);
    			n /= 16;
    		}
    		s.reverse();
    		System.out.println(s);
    	}
    }

     

    11:十六进制转十进制

    问题描述:

      从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
      注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。

    样例输入:

            FFFF

    样例输出:

            65535

    --------------------------------------------------------------------------------------------------

    思路:

            k进制转换为十进制,即求 当前位数字 * 进制基数 * 数位权重 之和。

           例如:1E = E(14)*16^0 + 1*16^1 = 14 + 16 = 30

    代码示例:

    import java.util.*;
    
    public class Main {
    	public static void main(String[] args) {
    		Scanner in = new Scanner(System.in);
    		StringBuilder s = new StringBuilder(in.nextLine());
    		in.close();
    		
    		long rel = 0;
    		s.reverse();
    		for (int i=0; i<s.length(); i++) {
    			char c = s.charAt(i);
    			int temp = c-'0';
    			
                // 用来判断这一位的字符是0-9还是A-F('A'-'0'=17)
    			if (temp < 16) {
    				rel += temp * Math.pow(16, i);
    			}
    			else {
    				rel += (temp-7) * Math.pow(16, i);
    			}
    		}
    		
    		System.out.println(rel);
    	}
    }
    

     

    12:十六进制转八进制

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

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

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

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

    样例输入
      2
      39
      123ABC

    样例输出
      71
      4435274

    ---------------------------------------------------------------------------------

    思路:
      先将十六进制数转换成二制数,再由二进制数转换成八进制。

           需要注意的是:每1位十六进制数可以转换为4位二进制数,而3位二进制数可以转换为1位八进制数。

    代码示例:

    import java.util.*;
    
    public class Main{
        // 将十六进制转换为二进制
    	private static StringBuilder toBinary(String strHex) {  
            StringBuilder strBin = new StringBuilder();
            
            for (int i=0; i<strHex.length(); i++){
            	char c = strHex.charAt(i);
                switch (c) {
                    case '0':
                    	strBin.append("0000");
                    	break;
                    case '1':
                    	strBin.append("0001");
                    	break;
                    case '2':
                    	strBin.append("0010");
                    	break;
                    case '3':
                    	strBin.append("0011");
                    	break;
                    case '4':
                    	strBin.append("0100");
                    	break;
                    case '5':
                    	strBin.append("0101");
                    	break;
                    case '6':
                    	strBin.append("0110");
                    	break;
                    case '7':
                    	strBin.append("0111");
                    	break;
                    case '8':
                    	strBin.append("1000");
                    	break;
                    case '9':
                    	strBin.append("1001");
                    	break;
                    case 'A':
                    	strBin.append("1010");
                    	break;
                    case 'B':
                    	strBin.append("1011");
                    	break;
                    case 'C':
                    	strBin.append("1100");
                    	break;
                    case 'D':
                    	strBin.append("1101");
                    	break;
                    case 'E':
                    	strBin.append("1110");
                    	break;
                    case 'F':
                    	strBin.append("1111");
                    	break;
                    default:
                    	break;
                }
            }
            return strBin;
        }
    	
        // 将二进制转换为八进制
    	private static StringBuilder toOctal(StringBuilder strBin) {
            StringBuilder strOct = new StringBuilder();
            
            for (int i=0; i<strBin.length(); i+=3) {
            	String temp = strBin.substring(i, i+3);
            	
                switch (temp) {
                    case "000":
                    	strOct.append("0");
                    	break;
                    case "001":
                    	strOct.append("1");
                    	break;
                    case "010":
                    	strOct.append("2");
                    	break;
                    case "011":
                    	strOct.append("3");
                    	break;
                    case "100":
                    	strOct.append("4");
                    	break;
                    case "101":
                    	strOct.append("5");
                    	break;
                    case "110":
                    	strOct.append("6");
                    	break;
                    case "111":
                    	strOct.append("7");
                    	break;
                    default:
                    	break;
                }
            }
            return strOct;
        }
    	
        public static void main(String[] args) {
            Scanner in = new Scanner(System.in);
            int n = in.nextInt();
            
            String[] strHex = new String[n];
            for (int i=0; i<n; i++) {
                strHex[i] = in.next();
            }
            in.close();
            
            for (int i=0;i<n;i++) {
                StringBuilder strBin = toBinary(strHex[i]);
                int l = strBin.length();
                
                // 不足三位时用零补足
                if (l%3 == 1) {
                	strBin.insert(0, "00");
                }
                if (l%3 == 2) {
                	strBin.insert(0, "0");
                }
                
                StringBuilder strOct = toOctal(strBin);
                // 去掉前导位的0
                if (strOct.charAt(0) == '0') {
                	
                	strOct.deleteCharAt(0);
                }
                System.out.println(strOct);
            }
        }
    }

     

    展开全文
  • 十六进制的计数方法是满16进1,所以十进制数16在十六进制中是10,而十进制的17在十六进制中是11,以此类推,十进制的30在十六进制中是1E。 给出一个非负整数,将它表示成十六进制的形式。 输入格式 输入包含一个...

    BASIC-10 十进制转十六进制

    资源限制

    时间限制:1.0s 内存限制:512.0MB

    问题描述

    十六进制数是在程序设计时经常要使用到的一种整数的表示方式。
    它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16个符号,分别表示十进制数的0至15。十六进制的计数方法是满16进1,所以十进制数16在十六进制中是10,而十进制的17在十六进制中是11,以此类推,十进制的30在十六进制中是1E。
    给出一个非负整数,将它表示成十六进制的形式。

    输入格式

    输入包含一个非负整数a,表示要转换的数。0<=a<=2147483647

    输出格式

    输出这个整数的16进制表示

    样例输入

    30

    样例输出

    1E

    #include<iostream>
    #include<cstring>
    using namespace std;
    int  main(){
    	int n,i=0,t;
    	cin>>n;
    	char s[10];
    	if(n==0)
    		cout<<0;
    	else{
    		while(n){
    			t=n%16;
    			if(t>=10)
    				s[i++]=t%10+'A';
    			else
    				s[i++]=t+'0';
    			n=n/16;
    		}
    		s[i]='\0';
    		char ch;
    		int len=strlen(s);
    		for(i=0;i<len/2;i++){
    			ch=s[i];
    			s[i]=s[len-i-1];
    			s[len-i-1]=ch;
    		}
    		cout<<s;
    	}
    	return 0;
    }
    

    BASIC-11 十六进制转十进制

    资源限制

    时间限制:1.0s 内存限制:512.0MB

    问题描述

    从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
    注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。

    样例输入

    FFFF

    样例输出

    65535

    #include<iostream>
    #include<cstring>
    using namespace std;
    int  main(){
    	char s[10];
    	long long sum=0;	//注意数据类型的大小
    	cin>>s;
    	int len=strlen(s);
    	for(int i=0;i<len;i++){
    		if(s[i]>='0'&&s[i]<='9'){
    			sum=sum*16+(s[i]-'0');
    		}
    		if(s[i]>='A'&&s[i]<='F')
    			sum=sum*16+(s[i]-'A'+10);
    	}
    	cout<<sum;
    	return 0;
    }
    

    BASIC-12 十六进制转八进制

    资源限制

    时间限制:1.0s 内存限制:512.0MB

    问题描述

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

    输入格式

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

    输出格式

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

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

    样例输入

    2   
    39   
    123ABC

    样例输出

    71   
    4435274

    【提示】   
    先将十六进制数转换成某进制数,再由某进制数转换成八进制。

    #include <iostream>
    #include <string>
    using namespace std;
    int main(){
        int n;
        cin>>n;
        string s1[12],s2[12];
        for(int i = 0;i<n;i++)
            cin>>s1[i];
        for(int i = 0;i<n;i++){
            s2[i]="";
            for(int j = 0;j<s1[i].length();j++){
                switch (s1[i][j]) {
                    case '0' : s2[i] += "0000"; break;
                    case '1' : s2[i] += "0001"; break;
                    case '2' : s2[i] += "0010"; break;
                    case '3' : s2[i] += "0011"; break;
                    case '4' : s2[i] += "0100"; break;
                    case '5' : s2[i] += "0101"; break;
                    case '6' : s2[i] += "0110"; break;
                    case '7' : s2[i] += "0111"; break;
                    case '8' : s2[i] += "1000"; break;
                    case '9' : s2[i] += "1001"; break;
                    case 'A' : s2[i] += "1010"; break;
                    case 'B' : s2[i] += "1011"; break;
                    case 'C' : s2[i] += "1100"; break;
                    case 'D' : s2[i] += "1101"; break;
                    case 'E' : s2[i] += "1110"; break;
                    case 'F' : s2[i] += "1111"; break;
                    default:
                        break;
                }
            }
            if(s2[i].length()%3==1)
    			s2[i] = "00" + s2[i];
            else if(s2[i].length()%3==2)
    			s2[i] = "0" + s2[i];
            int flag = 0;
            for(int j = 0;j<=s2[i].length()-3;j+=3){
                int num = 4*(s2[i][j]-'0')+2*(s2[i][j+1]-'0')+(s2[i][j+2]-'0');
                if(num)
    				flag = 1;
                if(flag)
    				cout<<num;
            }
            cout<<endl;
        }
        return 0;
    }
    
    

    BASIC-13 数列排序

    资源限制

    时间限制:1.0s 内存限制:512.0MB

    问题描述

    给定一个长度为n的数列,将这个数列按从小到大的顺序排列。1<=n<=200

    输入格式

    第一行为一个整数n。   
    第二行包含n个整数,为待排序的数,每个整数的绝对值小于10000。

    输出格式

    输出一行,按从小到大的顺序输出排序后的数列。

    样例输入

    5
    8 3 6 4 9

    样例输出

    3 4 6 8 9

    #include<iostream>
    #include<algorithm>
    using namespace std;
    int main(){
    	int n,m[201];
    	cin>>n;
    	for(int i=0;i<n;i++)
    		cin>>m[i];
    	sort(m,m+n);
    	for(int i=0;i<n;i++)
    		cout<<m[i]<<" ";
    	return 0;
    }
    
    展开全文
  • 软件方面的都需要它,在写程序的时候可以用十六进制代表简单的符号
  • 十进制二进制 八进制 十六进制

    千次阅读 2008-01-09 12:55:00
    基本知识 十进制 基数为10,逢10进1。在十进制中,一共使用10个不同...八进制使用8种不同的符号,它们与二进制的转换关系为: 0:000 1:001 2:010 3:011 4:100 5:101 6:110 7:111 十六进制 基数为16,逢16进1。
    基本知识

    十进制

    基数为10,逢10进1。在十进制中,一共使用10个不同的数字符号,这些符号处于不同位置时,其权值各不相同。

    二进制

    基数为2,逢2进1。在二进制中,使用0和1两种符号。

    八进制

    基数为8,逢8进1。八进制使用8种不同的符号,它们与二进制的转换关系为:

    0:000 1:001 2:010 3:011 4:100 5:101 6:110 7:111

    十六进制

    基数为16,逢16进1。十六进制使用16种不同的符号,它们与二进制的转换关系为:

    0:0000 1:0001 2:0010 3:0011 4:0100 5:0101 6:0110 7:0111

    8:1000 9:1001 A:1010 B:1011 C:1100 D:1101 E:1110 F:1111

    二进制数的运算

    算术运算:加法

    0 + 0 = 0 0 + 1 = 1 1 + 0 = 1 1 + 1 = 10(向高位进1)

    算术运算:减法

    0 ? 0 = 0 0 ? 1 = 1(向高位借1) 1 ? 0 = 1 1 - 1 = 0

    逻辑运算:或(∨)

    0 ∨ 0 = 0 0 ∨ 1 = 1 1 ∨ 0 = 1 1 ∨ 1 = 1

    逻辑运算:与(∧)

    0 ∧ 0 = 0 0 ∧ 1 = 0 1 ∧ 0 = 0 1 ∧ 1 = 1

    逻辑运算:取反

    0取反为1 1取反为0

    注意:算术运算会发生进位、借位,逻辑运算则按位独立进行,不发生位与位之间的关系,其中,0表示逻辑假,1表示逻辑真。

    2.转换为十进制

    二进制化为十进制

    例:将二进制数101.01转换成十进制数

    (101.01)2 = 1×22 + 0×21 + 1×20 + 0×2-1 + 1×2-2 = (5.25)10

    八进制化为十进制

    例:将八进制数12.6转换成十进制数

    (12.6)8 = 1×81 + 2×80 + 6×8-1 = (10.75)10

    十六进制化为十进制

    例:将十六进制数2AB.6转换成十进制数:

    (2AB.6)16 = 2×162 + 10×161 + 11×160 + 6×16-1 = (683.375)10

    3.转换为二进制

    八进制化为二进制

    规则:按照顺序,每1位八进制数改写成等值的3位二进制数,次序不变。

    例: (17.36)8 = (001 111 .011 110)2 = (1111.01111)2

    十六进制化为二进制

    规则:每1位十六进制数改写成等值的4位二进制数,次序不变。

    例: (3A8C.D6)16 = (0011 1010 1000 1100.1101 0110)2 = (11101010001100.1101011)2

    十进制整数化为二进制整数

    规则:除二取余,直到商为零为止,倒排。

    例:将十进制数86转化为二进制

    2 | 86…… 0

    2 | 43…… 1

    2 | 21…… 1

    2 | 10…… 0

    2 | 5 …… 1

    2 | 2 …… 0

    2 | 1 …… 1

    结果:(86)10 = (1010110)2

    十进制小数化为二进制小数

    规则:乘二取整,直到小数部分为零或给定的精度为止,顺排。

    例:将十进制数0.875转化为二进制数

    0.875

    × 2

    1.75

    × 2

    1.5

    ×2

    1.0

    结果:(0.875)10 = (0.111)2

    4.转换为八进制

    二进制化为八进制

    整数部份从最低有效位开始,以3位一组,最高有效位不足3位时以0补齐,每一组均可转换成一个八进制的值,转换完毕就是八进制的整数。

    小数部份从最高有效位开始,以3位一组,最低有效位不足3位时以0补齐,每一组均可转换成一个八进制的值,转换完毕就是八进制的小数。

    例:(11001111.01111)2 = (11 001 111.011 110)2 = (317.36)8

    十六进制化为八进制

    先用1化4方法,将十六进制化为二进制;再用3并1方法,将二进制化为8制。

    例: (1CA)16 = (000111001010)2 = (712)8

    说明:小数点前的高位零和小数点后的低位零可以去除。

    十进制化八进制

    方法1:采用除8取余法。

    例:将十进制数115转化为八进制数

    8| 115…… 3

    8| 14 …… 6

    8| 1 …… 1

    结果:(115)10 = (163)8

    方法2:先采用十进制化二进制的方法,再将二进制数化为八进制数

    例:(115)10 = (1110011)2 = (163)8

    5.转换为十六进制

    二进制化为十六进制

    整数部份从最低有效位开始,以4位为一组,最高有效位不足4位时以0补齐,每一组均可转换成一个十六进制的值,转换完毕就是十六进制的整数。

    小数部份从最高有效位开始,以4位为一组,最低有效位不足4位时以0补齐,每一组均可转换成一个十六进制的值,转换完毕就是十六进制的小数。

    例:(11001111.01111)2 = (1100 1111 .0111 1000)2 = (CF.78)16

    八进制化为十六进制

    先将八进制化为二进制,再将二进制化为十六进制。

    例:(712)8 = (111001010)2 = (1CA)16

    十进制化为十六进制

    方法1:采用除16取余法。

    例:将十进制数115转化为八进制数

    16| 115…… 3

    16| 7 …… 7

    结果:(115)10 = (73)16

    方法2:先将十进制化为二进制,再将二进制化为十六进制。 
    展开全文
  • #需要转换或者输出使用二进制,八进制或者十六进制表示整数。可以分别使用bin(),oct(),hex()函数 x=1234 print(bin(x)) print(oct(x)) print(hex(x)) #整数有符号,若处理负数,输出结果会包含一个负号。 x=-...
    #需要转换或者输出使用二进制,八进制或者十六进制表示的整数。可以分别使用bin(),oct(),hex()函数
    x=1234
    print(bin(x))
    print(oct(x))
    print(hex(x))

    #整数有符号,若处理负数,输出结果会包含一个负号。
    x=-1234
    print(format(x,'b'))
    print(format(x,'x'))

    #若想产生一个无符号值,需要增加一个指示最大位长度的值。比如为了显示32位值,可以这样写:
    x=-1234
    print(format(2**32+x,'b'))
    print(format(2**32+x,'x'))

    #为了以不同进制转换整数字符串,简单的使用带有进制的int(0函数即可
    print(int('4d2',16))
    print(int('10011010010',2))

    如要指定8进制,注意前缀是0o

    展开全文
  • 10.基础练习 十进制转十六...十六进制的计数方法是满16进1,所以十进制数16在十六进制中是10,而十进制的17在十六进制中是11,以此类推,十进制的30在十六进制中是1E。给出一个非负整数,将它表示成十六进制的形式...
  • 十进制十六进制

    2020-01-10 17:20:10
    十六进制的计数方法是满16进1,所以十进制数16在十六进制中是10,而十进制的17在十六进制中是11,以此类推,十进制的30在十六进制中是1E。给出一个非负整数,将它表示成十六进制的形式。 输入格式: 输入包含一个非.....
  • 一、十进制转十六进制相关知识...十六进制的计数方法是满16进1,所以十进制数16在十六进制中是10,而十进制的17在十六进制中是11,以此类推,十进制的30在十六进制中是1E。 例如: 十进制的435转换为十六进制,用43...
  • 一、标记符号 二进制的标记是B,如...十六进制的标记是H,如FEDCH,另外在编程中十六进制数也用“0x”作为开头。 二、数位表示 3位二进制表示1位八进制; 4位二进制表示1位十六进制; 二进制和十进制无此关系; ...
  • 在计算机中无法识别你给的符号“+”,"-",计算机只认识0和1 那么在二进制中如何表示负数。 先简单介绍一下负数如何转二进制,八进制,十六进制:比如给的是-4那么先算出+4的二进制表示:1 0 0但是请记住...
  • 符号十六进制十进制,自己写,已在项目中应用,java代码,android可以直接调用,希望对大家有帮助
  • 2. 十六进制字符串中不能包含多余前导零。如果要转化数为0,那么以单个字符'0'来表示;对于其他情况,十六进制字符串中第一个字符将不会是0字符。3. 给定数确保在32位有符号整数范围内。4. 不能使用任何由库...
  • //十进制十六进制 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String line = sc.nextLine(); //String转为long...
  • python input函数进制转换 input()函数-控制输入的进制数 格式化符号 %o八进制 %x十六进制 %d整数 PS:不要问为什么没有二进制的格式化符号,问了就是不知道。...这里用输入一个十六进制的数为例子 n=int(input(),
  • 十六进制的计数方法是满16进1,所以十进制数16在十六进制中是10,而十进制的17在十六进制中是11,以此类推,十进制的30在十六进制中是1E。  给出一个非负整数,将它表示成十六进制的形式。 输入格式  输入包含...
  • 十进制转八进制、十六...十六进制的计数方法是满16进1,所以十进制数16在十六进制中是10,而十进制的17在十六进制中是11,以此类推,十进制的30在十六进制中是1E。  给出一个非负整数,将它表示成十六进制的形式。...
  • 在学习计算机编程和原理等课程时,常用十六进制来表示数,十六进制数和二进制数之间的互相转换简单而且自然,十六进制使用下面的符号表示数(A是10、F是15):0 1 2 3 4 5 6 7 8 9 A B C D E F16进制数转十进制数(3...
  • 在学习计算机编程和原理等课程时,常用十六进制来表示数,十六进制数和二进制数之间的互相转换简单而且自然,十六进制使用下面的符号表示数(A是10、F是15):0 1 2 3 4 5 6 7 8 9 A B C D E F16进制数转十进制数(3...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,858
精华内容 1,143
关键字:

十进制十六进制的符号