精华内容
下载资源
问答
  • 输入一个以#结束的字符串,滤去所有的非十六进制字符(不分大小写),组成一个新的表示十六进制数字的字符串,输出该字符串并将其转换为十进制数后输出。 输入格式: 输入在一行中给出一个不超过80个字符长度的、以...

    7-4 十六进制字符串转换成十进制非负整数 (13分)

    输入一个以#结束的字符串,滤去所有的非十六进制字符(不分大小写),组成一个新的表示十六进制数字的字符串,输出该字符串并将其转换为十进制数后输出。

    输入格式:

    输入在一行中给出一个不超过80个字符长度的、以#结束的非空字符串。

    输出格式:

    第1行中输出已滤去所有非十六进制字符的字符串。 在第2行中输出转换后的十进制数。题目保证输出结果在长整型范围内。

    输入样例:

    -zy1+Ak0-bq?#
    

    输出样例:

    1A0b
    6667
    #include <stdio.h>
    #include <string.h>
    #include<math.h>
    int num(char s);
    
    int main()
    {
    
        char a[81],b[81]; //数组b存放过滤后的字符串
        int d,i,j,k;
    
        i=0;
        while((d=getchar())!='#'){
            a[i]=(char)d;
            i++;
        }
        a[i]='\0';
    
        j=i,k=0;
        for(i=0;i<j;i++){
            if((a[i]>='0'&&a[i]<='9')||(a[i]>='a'&&a[i]<='f')||(a[i]>='A'&&a[i]<='F')){
                b[k]=a[i];
                k++;
            }
        }
        for(i=0;i<k;i++){
            printf("%c",b[i]);
        }
    
        int sum=0;
        for(i=k-1,j=0;i>=0;i--,j++){   //i 控制幂次 j控制位数 因为 f41  第一位的要乘的数的幂次为f*16的2次方
             if(b[j]>='0'&&b[j]<='9'){
                sum=sum+(b[j]-48)*pow(16,i);  //(b[j]-48) 将字符转化为相对应的数字;
            }else{
                sum=sum+num(b[j])*pow(16,i);
            }
        }
        printf("\n%d",sum);
        return 0;
    
    }
    int num(char s)
    {
        if(s == 'a'||s == 'A')
            return 10;
        if(s == 'b'||s == 'B')
            return 11;
        if(s == 'c'||s == 'C')
            return 12;
        if(s == 'd'||s == 'D')
            return 13;
        if(s == 'e'||s == 'E')
            return 14;
        if(s == 'f'||s == 'F')
            return 15;
    }

     

     

    展开全文
  • 十进制数字拆分4字节十六进制数.vi十进制数字拆分4字节十六进制数.vi
  • 二进制 ...十六进制与其它进制有所不同,在10到15用英文字母进行表示。 上面就是对进制的简单介绍,下面就是对进制转换而进行介绍。 1.二进制转八进制 拿二进制10010110举例 首先需要3个二进...

    二进制

    二进制就是计算机常用的进制,即逢二进一。例如:1010

    八进制

    八进制即逢八进一。例如:626

    十进制

    十进制就是我们在计算中常用的进制,所以就不再举例(即逢十进一)

    十六进制

    十六进制与其它进制有所不同,在10到15用英文字母进行表示。

    上面就是对进制的简单介绍,下面就是对进制转换而进行介绍。

    1.二进制转八进制

    拿二进制数10010110举例

    首先需要3个二进制数各划分一个区域,不足时则补零。我们可以看出该二进制数为八位,我们需要补充一位,

    即010010110

    从左到右依次是:(计算方法是从右向左依次乘上2的n次幂,n从零开始,^符号表示次幂)

    0  1  0                                    0  1  0                                        1  1  0

    0*2^2+1*2^1+0*2^0=2          0*2^2+1*2^1+0*2^0=2               1*2^2+1*2^1+0*2^0=6

    然后合并得到226就是转换后的八进制数。

    2.二进制转十进制

    拿二进制数10010110举例

    这里就不需要划分区域,而是直接进行计算。(计算方法是从右向左依次乘上2的n次幂,n从零开始,^符号表示次幂)

    1*2^7+0*2^6+0*2^5+1*2^4+0*2^3+1*2^2+1*2^1+0*2^0=150

    3.二进制转十六进制

    拿二进制数100101100举例

    二进制转十六进制和二进制转八进制类似,不过转十六进制划分区域为4个,不足也是补零

    000100101100

    0001                                               0010                                                1100

    0*2^3+0*2^2+0*2^1+1*2^0=1        0*2^3+0*2^2+1*2^1+0*2^0=2        1*2^3+1*2^2+0*2^1+0*2^0=12(12也就是十六进制中的C)

    合并为12C

    4.八进制转二进制

    八进制转二进制是二进制转换成八进制的逆过程。(不足时也是补零)

    拿八进制数226举例(需要取余数,采用倒叙过程)

    2                                                         2                                                                  6

    2/2=1(余数为0)                                  2/2=1(余数为0)                                            6/2=3(余数为0) 

    1/2=0(余数为1)                                  1/2=0(余数为1)                                            3/2=1(余数为1)   

                                                                                                                                  1/2=0(余数为1)    

                                                      

    所以取余数为10,不足三位,则补零,为010.                                                       余数为110

    最后合并,最终转换的二进制数为10010110

    5.八进制转十进制

    拿八进制数226举例(由右向左依次乘以8的n次幂,n从零开始)

    2*8^2+2*8^1+6*8^0=150

    6.八进制转十六进制

    八进制不能直接转换为十六进制。可以采用间接转换法来进行转换。

    1.先把八进制转换为二进制,然后再转换为十六进制。

    2.先把八进制转换为十进制,然后再转换为十六进制。

    拿八进制数226举例,从上面可以看出转换为二进制为10010110,然后我们再把它转换为16进制。

    划分区域

    1001                                                   0110

    1*2^3+0*2^2+0*2^1+1*2^0=9            0*2^3+1*2^2+1*2^1+0*2^0=6

    合并为96,所以八进制226转换为十六进制为96.

    第二种也是一样,小编在这里就不再举例,大家可以试试看,也是一样的结果。

    7.十进制转二进制

    十进制转二进制就是二进制转十进制的逆过程。同样,我们也拿十进制150来举例。

    150/2=75(余数为0)

    75/2=37(余数为1)

    37/2=18(余数为1)

    18/2=9(余数为0)

    9/2=4(余数为1)

    4/2=2(余数为0)

    2/2=1(余数为0)

    1/2=0(余数为1)

    整合为10010110即是转换的二进制。

    8.十进制转八进制

    十进制转八进制和八进制转十进制是互逆的,我们拿150来举例。

    150/8=18(余数为6)

    18/8=2(余数为2)

    2/8=0(余数为2)

    整合为226,得到八进制数。

    9.十进制转十六进制

    十进制转十六进制和十六进制转十进制是互逆的,我们拿150来举例。

    150/16=9(余数为6)

    9/16=0(余数为9)

    整合为96,得到十六进制数。

    10.十六进制转二进制

    十六进制转二进制和二进制转十六进制是互逆的,我们拿12C来举例。(不足的位数补零)

    1                                                             2                                                               C(转化为12)

    1/2=0(余数为1)                                      2/2=1(余数为0)                                         12/2=6(余数为0)  

                                                                  1/2=0(余数为1)                                          6/2=3(余数为0)

                                                                                                                                    3/2=1(余数为1)

                                                                                                                                    1/2=0(余数为1)

    0001                                                     0010                                                            1100

    整合为000100101100

    11.十六进制转八进制

    八进制不能直接转换为十六进制。那么十六进制也不能直接转化为八进制,可以采用间接转换法来进行转换。

    1.先把十六进制转换为二进制,然后再转换为八进制。

    2.先把十六进制转换为十进制,然后再转换为八进制。

    这里就不再介绍转化的过程,和八进制转化为十六进制一样,这里就是一个逆过程。

    12.十六进制转十进制

    拿十六进制96来举例(由右向左依次乘以16的n次幂,n从零开始)

    9*16^1+6*16^0=150

    好了,上面就是二进制,八进制,十进制,十六进制之间的转换。我们可以进行分类记忆,并总结规律。

    注意:1.我们在将进制数除以2的时候一定要选择逆顺序。

               2.在乘以次幂的时候也是从右往左的顺序,由零次幂依次递增。

               3.在选择区域的时候一定要看清是转换十六进制还是八进制,否则就会出错,记住不足的位数一定要补零哦。

    这些就是小编要提醒的注意事项,当然了,通过实例,自己多多练习,相信进制的转换对于大家来说就是很简单的啦。

    感谢朋友们对小编文章的评价哦!小编在后期也补充了小数部分的进制转换。请参考文章https://blog.csdn.net/mez_Blog/article/details/102468841希望大家多多支持哦^_^

    Endeavor

    展开全文
  • 汇编语言:将ASCⅡ码表示十进制数转换二进制/十六进制数 你们好! 这是我的第一个汇编程序的博客,汇编是一个神奇的东西,你深入了解他之后会他着迷的!!! 题目 将ASCⅡ表示十进制数字转化二进制,...

    汇编语言:将ASCⅡ码表示的十进制数转换为二进制数/十六进制数

    你们好! 这是我的第一个汇编程序的博客,汇编是一个神奇的东西,你深入了解他之后会为他着迷的!!!

    题目

    将ASCⅡ表示的十进制数字转化为二进制数,例如,默认输入30H,30H,32H,35H,36H,那么程序的最后查看AX寄存器应该是0100。

    分析

    题目中的30h代表是的十进制0的ASCⅡ码,十进制的数字0-9对应的ASCⅡ码就是30h-39h。而30h,30h,32h,35h,36h,代表的正好是十进制的数字256,也就是28,对应着二进制的0000 0001 0000 0000 ,因为AX寄存器是十六位的,是用十六进制表示的,也就是0010

    转换原理

    我们以五位十进制数字为例:
    1、首先是将五位ASCⅡ码转换为十进制的数字
    ∑ i = 0 4 D i ∗ 10 = ( ( ( D 4 ∗ 10 + D 3 ) ∗ 10 + D 2 ) ∗ 10 + D 1 ) ∗ 10 + D 0 \sum_{i=0}^4D_i*10=(((D_4*10+D_3)*10+D_2)*10+D_1)*10+D_0 i=04Di10=(((D410+D3)10+D2)10+D1)10+D0
    这就是ASCⅡ转换为十进制数字的公式,而计算机寄存器中的数字是用十六进制数字表示的,也就是这时候就已经转换为十六进制数字了。
    2、一定要注意,你要搞清楚什么时候使用ASCⅡ值,什么时候使用真值
    ASCⅡ:输入和输出时使用的均为ASCⅡ码值
    真值:计算的时候使用的为真值,真值就是用ASCⅡ值减去30

    sub dl,30h;转换为真值
    

    我们可以用这样的代码转换为真值,同样,使用add命令可以转化为ASCⅡ值。
    3、有的人想要把结果按二进制输出,这时候你可以选择循环来实现。我用的是逻辑循环左移,也就是每次都会将最高位循环移动到最低位,每次使用01h与结果,将这一位输出就可以知道这一位是0还是1。输出的方法是使用21h号中断的02h,这个中断会输出dl寄存器中的ASCⅡ码对应的字符。

    程序代码

    csdn不支持汇编语言,无法高亮显示

    	data segment;定义数据段
    	org 3500h;数据段从3500h开始存储
    	num	db 30h,30h,32h,35h,36h;num首地址为3500h
    	data ends
    	
    	code segment;代码段
    	assume cs:code,ds:data;声明代码段地址和数据段地址
    	start:
    		mov ax,data
    		mov ds,ax;将数据存储到内存中
    		
    		mov cx,4h;循环4次
    		mov bx,000ah
    		
    		mov ah,0;ah必须为0,对应mul指令
    		mov si,3500h;可以使用offset num代替3500h
    		mov al,[si];将si的数据交给al寄存器
    		sub al,30h;获得asc码对应真值,使用真值运算
    		mov dh,00h
    		
    	next1:
    		mul bx;此处为ax*bx->dl_ax,所以ah必须为0,否则ah会影响
    			  ;当需要转换的十进制数小于65536的时候,
    			  ;数据全部存储于ax中
    		inc si
    		mov dl,[si];取下一位十进制数字
    		sub dl,30h;转换为真值
    		add ax,dx;dx+ax->ax,dh值已经置零
    		loop next1;因为循环前已经处理过第一个数,所以cx为4
    		
    		mov cx,10h;此处是十六进制,cx循环10次
    		mov bx,ax
    		
    	next2:
    		rol bx,1;逻辑循环左移
    		mov dl,bl
    		and dl,01h;确定最低位为0还是1
    		add dl,30h;将最低位转换为asc码输出
    		mov ah,02h
    		int 21h
    		loop next2;共循环16次
    		
    		mov ah,4ch
    		int 21h
    	code ends
    		end start
    

    运行环境

    使用的运行环境为DOSBOX0.74版本,这是我有史以来感觉最容易搞定的编译环境,编译环境的安装我就不在赘述了。

    代码运行过程

    1、首先建立**.asm文件
    2、汇编语言运行的代码过程需要
    masm进行汇编
    3、汇编无误之后要进行
    link链接
    4、链接无误会产生
    .exe文件,重点来了,你可以直接运行此可执行文件会输出0000 0001 0000 0000**,如果你想要查看ax寄存器,那么你需要在第二次循环之前查看。

    查看ax值

    -u指令进行反汇编,查看汇编代码对应的指令值
    在这里插入图片描述
    -g27执行到第二次循环开始之前,可以查看此时的寄存器的值
    在这里插入图片描述

    代码运行细节

    1、loop为直到型循环,所以需要循环几次,你的cx值就设为几。本代码第一次循环因为在进入循环之前已经处理过一次,所以只需要循环4次,即cx=4。第二次循环需要循环16次,因此cx=10h。
    2、有时候我们只需要使用低八位寄存器来获得数据,但是在运算过程中我们会涉及到高位的寄存器,很有可能会影响我们的运算结果。所以在某些细节上面需要把高位寄存器置0,就像本程序中某些情况下的ah和dh,细节很重要。

    展开全文
  • 分别用十进制,八进制,十六进制分别表示20: 十进制: 20 //decimal 八进制: 024 //octal 十六进制:0x14或者0X14 //hexadecimal 发现一个特别有趣的现象,就是在打印一个整数的地址时,使用不同的十六进制...

    分别用十进制,八进制,十六进制分别表示20:

    十进制:   20        //decimal

    八进制:   024      //octal

    十六进制:0x14或者0X14  //hexadecimal

    发现一个特别有趣的现象,就是在打印一个整数的地址时,使用不同的十六进制格式,打印效果不同,如下所示:

     





    展开全文
  • 目录题目:十六进制数1949对应的十进制数是多少要点代码 题目:十六进制数1949对应的十进制数是多少 问题描述  请问十六进制数1949对应的十进制数是多少?请特别注意给定的是十六进制,求的是十进制。 答案提交  ...
  • 输入一个位十六进制数,输出其十进制表示 比如输入:f 则输出:15 (这里使用小写f 不对大写F进行判断) stack segment db 10 dup(?) stack ends data segment string db 'please input a num: $' result db 0ah,0dh...
  • 十六进制转换为十进制,是先要将十六进制转换二进制,在通过二进制转换为十进制十六进制转换二进制很简单,我们首先要明白,一位十六进制代表四位二进制,如F对应二进制的1111,A代表二进制的1010,利用这种...
  • 一、二进制、八进制十六进制数表示 一个数字默认就是十进制的,表示一个十进制数字不需要任何特殊的格式。但是,表示一个二进制、八进制或者十六进制数字就不一样了,为了和十进制数字区分开来,必须采用...
  • 十六进制十进制问题描述 从键盘输入一个不超过8位的正的十六进制数字符串,将它转换正的十进制数后输出。 注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。样例输入FFFF样例输出65535 ...
  • 数字转换为十六进制数

    千次阅读 2020-08-17 23:18:38
    “数字转换为十六进制数”1 给定一个整数,编写一个算法将这个转换为十六进制数。对于负整数,我们通常使用 补码运算 方法。 注意: 十六进制中所有字母(a-f)都必须是小写。 十六进制字符串中不能包含多余的前导零...
  • 十六进制带小数转换成十进制

    千次阅读 2017-12-11 21:59:00
    十六进制数转换成十进制数时,先用加权求和的方式表示出来,再将十六进制数中的基数“10H”替换对应的十进制数值“16”,同时也将十六进制数中的A、B、C、D、E、F替换对应的十进制数值10、11、12、13...
  • 十六进制转换有16进制每一位上可以是从小到大0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F16个大小不同的,即逢16进1,其中用A,B,C,D,E,F(字母使用大写)这六个字母来分别表示10,11,12,13,14,15...
  • 十进制转换为十六进制,也就是 采用 除k取余法 ,直接让10处以16,再对 数据如果小于10和大于10进行处理,代码如下: #include<iostream> #include<string> using namespace std; int main() { ...
  • ASCII码值转化十六进制十进制数十六进制字符值转十进制,ASCII码值;
  • 对于刚开始学习C语言的来说,我们知道%d可以表示十进制,%o可以表示八进制的,%x用来表示十六进制,但却没有来表示二进制的。 这就是相对应的八进制十六进制数#include &lt;stdio.h&gt; ...
  • 用汇编实现十六进制数十进制数的转换 一、实现功能 实现一位十六进制数十进制数的转换。 二、设计分析       汇编语言中,字符在机器中都是以ascii码的二进制格式存储,但是汇编语言写的时候常用...
  • 给定一个整数,编写一个算法将这个转换为十六进制数。 对于负整数,我们通常使用 补码运算 方法。 注意: 十六进制中所有字母(a-f)都必须是小写。 十六进制字符串中不能包含多余的前导零。 如果要转化的数为0,那么...
  • Matlab将十六进制数转换为十进制数(有符号)(十六转十)
  • 十六进制中有0x就代表是十六进制,没有0x就代表是十进制。 整型常量 1,八进制整常数 八进制整常数必须以0开头,即以0作为八进制的前缀。数码取值0~7。八进制通常是无符号。 以下各是合法的八进制...
  • 十六进制十进制数

    千次阅读 2018-03-05 19:49:36
    /*** 十六转十进制(位权法)* 如:十六进制数:6A,-------转换为十进制数是:6*161+(A换10)100=96+1=97 十六进制数:FFF,--------转换为十进制数:15*162+15*161+15*160=4095* @author kevin**/public class ...
  • 本程序主要是将十进制转十六进制函数(包括正负整数及小数),并根据设置显示大小端。输入参数说明:x表示十进制数,N表示最后转换十六进制数的位数(字节),flag表示大小端(1是小端,2是大端)
  • 2665: 将十进制数对应的八进制、十六进制十进制...输入一个十进制数,转换对应的八进制、十六进制十进制数输出 输入 输入一个十进制数 输出 输出该十进制数对应的八进制、十六进制十进制数
  • Problem B: 将十进制、八进制和十六进制数1000对应十进制数输出 Description 将十进制的1234输出 将八进制的1234对应其十进制数进行输出 将十六进制的1234对应其十进制数进行输出 Input 无 Output ...
  • 十进制数转换为十六进制数

    千次阅读 2016-08-05 09:45:37
    最近公司的打印机小项目,做了一半,因为公司缺乏资源,只有自己买了一块开发板,2天后才能到,所以只能先搁在...需求:十进制数转换为十六进制数 public class Decimal2Hex { public static void main(String[] args)
  • 十进制数转换成十六进制数~C语言

    万次阅读 2017-10-28 16:56:49
    #include /*****下面将整数a转换成十六进制输出的字符串*****/ /*****原理:1,首先知道0b100000 = 0b10000*2 = 0b1000*2 = 0b100*2 =0b10*2 利用这一特性能将char型的.../***** 2,15以内的十进制数输出
  • 二、十六进制转二进制计算十六进制数转二进制的方法:计算十六进制数2BF7转二进制:三、十六进制十进制计算十六进制数十进制数的方法:计算十六进制数2BF7转成十进制数:四、十六进制转八进制方法一:先...
  • 二进制一般转化为十进制数都是直接调用 Integer.parseInt(hexadecimalStr, 2); Long.parseInt(hexadecimalStr, 16); 直接使用这个方法,就能将数据转化对应的十进制数, 但是这个一般只能适用正数 2.负数二进制...
  • 输入一个以#结束的字符串,滤去所有的非十六进制字符(不分大小写),组成一个新的表示十六进制数字的字符串,输出该字符串并将其转换为十进制数后输出。 输入格式: 输入在一行中给出一个不超过80个字符长度的、以#...
  • 将二进制、八进制、十六进制转换为十进制 二进制、八进制和十六进制十进制转换都非常容易,就是“按权相加”。所谓“权”,也即“位权”。 假设当前数字是N进制,那么: 对于整数部分,从右往左看,第i位的位权...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 130,889
精华内容 52,355
关键字:

十六进制数11表示成十进制为