精华内容
下载资源
问答
  • 十六进制数和单精度浮点数之间转换,转换非常简单,容易上手,一般人想不到的方法,符合IEEE754协议。
  • 将键盘输入的十六进制数转换为十进制输出。 实验原理 首先利用dos功能调用,读取输入的两位十六进制的第一位数字,首先判断输入的字符是否在0-9、a-f、A-F之间,如果不在则程序直接退出,如果在则将大写字母减37h,...

    实验内容:

    将键盘输入的十六进制数转换为十进制输出。

    实验原理

    首先利用dos功能调用,读取输入的两位十六进制的第一位数字,首先判断输入的字符是否在0-9、a-f、A-F之间,如果不在则程序直接退出,如果在则将大写字母减37h,小写字母减57h,数字减30h,然后乘以十六后以二进制的形式暂存在bl当中,同理输入第二位数字,与bl相加,然后判断bl是否大于99,如果大于99,则先除以100将百位数显示出来,同理显示十位和个位数字,如果小于99,则直接除以10显示十位数,然后显示个位数字。

    代码附录如下:

    code segment
    assume cs:code
    
    start:
    push ds
    sub ax,ax
    push ax
    mov bx,0
    mov dx,0
    mov cx,10 ;初始化,设置循环次数为10次
    
    xunhuan:
    mov ah,1
    int 21h ;读入第一位
    cmp al,'0'
    jb aa
    cmp al,'9'
    ja dayu91
    sub al,'0' ;减去30H
    jmp zhixing
    
    dayu91:
    cmp al,'A'
    jb aa
    cmp al,'F'
    ja dayuF1
    sub al,37h;减去60H
    jmp zhixing
    
    dayuF1:
    cmp al,'a'
    jb aa
    cmp al,'f'
    ja aa
    sub al,57h;减去60H
    jmp zhixing
    
    
    zhixing:
    mov dl,16
    mul dl ;乘以16
    mov bl,al ;放到bl中
    
    ;输入个位数
    mov al,0
    mov ah,1
    int 21h
    cmp al,'0'
    jb aa
    cmp al,'9'
    ja dayu92
    sub al,'0'
    jmp next
    
    
    dayu92:
    cmp al,'A'
    jb aa
    cmp al,'F'
    ja dayuF2
    sub al,37h ;减去37H
    jmp next
    
    
    
    dayuF2:
    cmp al,'a'
    jb aa
    cmp al,'f'
    ja aa
    sub al,57h ;减去57H
    jmp next
    aa:
    mov ax,4c00h
    int 21h
    
    
    
    next:
    add bl,al ;此时dl中为2进制表示
    ;以下换行
    mov dl,13
    mov ah,2
    int 21h
    mov dl,10
    mov ah,2
    int 21h
    
    
    ;以下为以10进制形式输出
    cmp bl,99    ;如果是三位十进制数显示,跳转
    ja sanwei  
    mov al,bl      ;如果是两位十进制数显示
    mov ah,0
    mov cl,10
    div cl
    
    mov ch,ah
    mov dl,al
    add dl,30h
    mov ah,02h
    int 21h
    
    mov dl,ch
    add dl,30h
    mov ah,02
    int 21h
    ;以下换行
    mov dl,13
    mov ah,2
    int 21h
    mov dl,10
    mov ah,2
    int 21h
    
    dec cx
    jz jieshu
    jmp xunhuan
    
    
    sanwei:
    ;如果是三位十进制数显示,10进制形式输出
    mov al,bl      ;算出百位数
    mov ah,0
    mov cl,100
    div cl
    mov dl,al       ;
    add dl,30h
    mov ch,ah        ;把余数放到ch中
    mov ah,02h
    int 21h
    mov al,ch
    mov ah,0
    mov cl,10
    div cl
    mov ch,ah
    mov dl,al
    add dl,30h
    mov ah,02h
    int 21h
    mov dl,ch
    add dl,30h
    mov ah,02
    int 21h
    ;以下换行
    mov dl,13
    mov ah,2
    int 21h
    mov dl,10
    mov ah,2
    int 21h
    
    dec cx
    jz jieshu
    jmp xunhuan
    
    
    jieshu:
    mov ax,4c00h
    int 21h
    code ends
    end start
    
    

    实验结果:

    在这里插入图片描述
    通过观察实验结果可以发现,当输入十六进制数字时,程序将其转化为了十进制数字并显示了出来。

    体会与感想

    通过本次实验,我学会了如何进行汇编程序的编写,以及熟练掌握汇编语言中的各种基础命令与操作,也十分感慨高级语言的发明是多么厉害的选择,仅仅一个转换进制的程序,用C++仅需要几行就可以编写出来,然而用汇编语言编写却用了一百多行。但也让我对计算机底层如何进行代码实现有了深刻的理解。在实验过程中我遇到了很多问题,比如由于程序代码太长,跳转总是超出范围,需要多跳几次,且汇编语言只能顺序执行,这对程序的编写提升了很大的难度。与此同时,在进行循环操作时,由于在程序中我已经使用了cx的值,导致循环失败,在加入push和pop的压栈出栈命令后,很好的保护了cx的值,使得程序顺利执行。本次实验让我收获匪浅,受益良多。

    展开全文
  • 也就是说按普通的思路来做,先十进制再转换成八进制会报错, 但是这里直接采取格式话输出是成功的,可能是系统的Bug. 题目要求: 资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述  给定n个十六进制正整数,...
  • 十六进制的计数方法是满16进1,所以十进制数16在十六进制中是10,而十进制 的17在十六进制中是11,以此类推,十进制的30在十六进制中是1E。 给出一个非负整数,将它表示成十六进制的形式。 输入格式  输入包含一个...
  • 浮点数和十六进制数的相互转换,包括:1.单精度浮点数(32位)和十六进制数的相互转换,2.双精度浮点数(64位)和十六进制数的相互转换。
  • 用js实现的十进制的颜色值转换成十六进制的代码
  • 有符号十六进制数转十进制 int main() { unsigned int a = 0xd8; if (a & 0x80) { a -= 1; a = ~a; a &= 0x7f; a = -a; } printf("a %d\n", a); return 0; } 示例的变量为八位数 ...

    int main()
    {
        unsigned int a = 0xd8;
        if (a & 0x80) {
            a -= 1;
            a = ~a;
            a &= 0x7f;
            a = -a;
        }
        printf("a %d\n", a);
        return 0;
    }

    示例的变量为八位数

     

    展开全文
  • 主要介绍了C++实现十六进制字符串转换为十进制整数的方法,涉及C++字符串与数制转换的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
  • 主要介绍了C# 进制转换的实现(二进制、十六进制十进制),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • 十六进制转换十进制原理介绍 十六进制转换为十进制,是先要将十六进制...十六进制F对应二进制1111,十六进制6对应二进制0110,十六进制C对应二进制1100,那么十六进制数0x1F6C对应的二进制数就是0001 1111 0110 1100。

    十六进制转换十进制原理介绍

    十六进制转换为十进制,是先要将十六进制转换为二进制,在通过二进制转换为十进制。
    十六进制转换为二进制很简单,我们首先要明白,一位十六进制代表四位二进制,如F对应二进制的1111,A代表二进制的1010,利用这种一一对应的关系,很容易就把十六进制转换为二进制,如0x1F6C,其中十六进制1对应二进制0001,十六进制F对应二进制1111,十六进制6对应二进制0110,十六进制C对应二进制1100,那么十六进制数0x1F6C对应的二进制数就是0001 1111 0110 1100。
    得到对应的二进制数后,再将二进制转换为十进制,这一步就更简单了,只需要套一个公式即可,二进制右边为低位,左边为高位,最右边的第一个数代表2的0次方,自右往左依次递增,1、2、3、4…,十六位的二进制数最高位就是2的16 - 1 = 15次方(因为最低位从0开始),将二进制每一位上的数作为系数,与该位对应的次方相乘,再将所有位算得的结果相加,最后得到的数便是二进制对应的十进制数。我们拿0001 1111 0110 1100为例,公式便为 f = 0 ∗ 2 0 + 0 ∗ 2 1 + 1 ∗ 2 2 + 1 ∗ 2 3 + 0 ∗ 2 4 + 1 ∗ 2 5 + 1 ∗ 2 6 + 0 ∗ 2 7 + 1 ∗ 2 8 + 1 ∗ 2 9 + 1 ∗ 2 1 0 + 1 ∗ 2 1 1 + 1 ∗ 2 1 2 + 0 ∗ 2 1 3 + 0 ∗ 2 1 4 + 0 ∗ 2 1 5 f = 0*2^0 + 0*2^1+1*2^2 + 1*2^3+0*2^4 + 1*2^5+1*2^6 + 0*2^7+1*2^8 + 1*2^9+1*2^10 + 1*2^11+1*2^12 + 0*2^13+0*2^14 + 0*2^15 f=020+021+122+123+024+125+126+027+128+129+1210+1211+1212+0213+0214+0215最后算得f = 8044,那么8044就是二进制0001 1111 0110 1100所对应的十进制数,同样也是十六进制数0x1F6C对应的十进制数。
    我们通篇以十六位的数来讲解的,其余位的数举一反三即可,原理相同。

    代码实现

    有了相关的知识之后,我们便可以很容易将代码实现

    #include "stdio.h"
    #include "math.h"
    unsigned short int DecData_16[4];      //用于存储十进制数,数组的大小根据自己的实际情况进行修改
    /* -------------------十六进制(十六位)转换为十进制--------------------- */
    void Hex2Dec_16(unsigned short int* temp)
    {
    	for(int i = 0;i < 4;i++)    //这里是4个十六进制数,所以只循环四次,根据自己的实际情况修改
    	{
    		unsigned short int Hex = temp[i];
    		unsigned short int Dec = 0;
    		for(int j = 0;j < 16;j++)   //16表示一个十六进制数一共16位,根据自己的实际情况进行修改
    		{
    			if(Hex & 0x0001)   //判断十六进制数对应的二进制的最后是0还是1,所以十六进制转换为二进制这一步工作代码暗中就已经实现了
    			{
    				Dec += pow(2,j);    pow(2,j)是math.h头文件里的库函数,进行次方运算
    				Hex >>= 1;   //这里的移位操作是对十六进制对应的二进制进行操作,不需要我们进行转换
    			}
    			else   //如果最后一位不是1
    			{
    				Dec += 0;   //则加0
    				Hex >>= 1;
    			}
    		}
    		DecData_16[i] = Dec;
    	}
    }
    

    到此为止我们便实现了十六进制到十进制的转换,关于十进制转换为十六进制,请参考链接: STM32 十进制转换成十六进制的实现(有例程),在Keil5里面用C语言实现,不用scanf函数.

    展开全文
  • 编一程序,把键入的十六进制数转换成十进制数并在屏幕上显示出来。键入的最大数为FFFFH,若键入的不是十六进制数,则显示出错提示。
  •  请问十六进制数1949对应的十进制数是多少?请特别注意给定的是十六进制,求的是十进制。 答案提交  这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写...
  • 基于C实现二、八、十六进制数转十进制数的算法,最终封装到一个函数里面,使用方便!!!
  • 无线传感器网络进行数据传输,在pc端使用串口调试助手接收十六进制数据,针对每一个数据包进行批量定的数据处理,将数据包中的十六进制数据转换成十进制数据,便于后期处理和利用
  • 主要介绍了C#十六进制字符串转十进制int的方法,涉及C#操作数制转换的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
  • 十进制数转换为十六进制数Conversion of decimal number system into hexadecimal number system can be done by successively dividing an integral part by 16 till the quotient is 0 and then reading the ...

    十进制数转换为十六进制数

    Conversion of decimal number system into hexadecimal number system can be done by successively dividing an integral part by 16 till the quotient is 0 and then reading the remainder of all in the bottom to the top manner, where the bottom one is the MSB and the topmost is the LSB. For fractional part, we successively multiply it by 16 till we get 0 in the fractional part of the product term, the integral part of the product term recorded from top to bottom forms the respective hexadecimal number where topmost is the MSB.

    可以通过将一个整数部分依次除以16直到商为0,然后从下到上依次读取所有的余数,从而将十进制数系统转换为十六进制系统 ,其中最低的是MSB,最高的是是LSB。 对于小数部分,我们将其连续乘以16,直到乘积项的小数部分得到0,从上到下记录的乘积项的整数部分形成相应的十六进制数,其中最高的是MSB。

    To convert a mixed decimal number into hexadecimal, we will first convert integral and fractional parts into hexadecimal and then combine them.

    要将混合的十进制数转换为十六进制 ,我们将首先将整数和小数部分转换为十六进制,然后将它们组合。

    The only thing to be kept in mind is the digits in hexadecimal number system are as:

    唯一要记住的是十六进制数字中的数字为:

    1 , 2, 3, 4, 5, 6, 7, 8, 9, 10 = A, 11 = B, 12 = C, 13 = D, 14 = E, 15 = F

    1、2、3、4、5、6、7、8、9、10 = A,11 = B,12 = C,13 = D,14 = E,15 = F

    Now let's take examples to understand the conversion of decimal number to hexadecimal number.

    现在,让我们以示例了解十进制数到十六进制数转换

    Example 1:

    范例1:

    Convert (1954.785)10 to ( ? )16

    将(1954.785) 10转换为(?) 16

    Solution:

    解:

    Given decimal number (1954.785)10 is of mixed type and contains both integral (1954)10 and decimal part (0.785)10. To convert the given number into hexadecimal, we have to convert integral and fractional part individually into hexadecimal and then combine them together to get the required result.

    给定的十进制数(1954.785) 10是混合类型,并且包含整数(1954) 10和十进制部分(0.785) 10 。 要将给定数字转换为十六进制,我们必须将整数和小数部分分别转换为十六进制,然后将它们组合在一起以获得所需的结果。

    Integral Part

    整体部分

    DivisorQuotientRemainder
    161954
    161222 LSB
    16710 = A
    1607 MSB
    除数
    16 1954年
    16 122 2 LSB
    16 7 10 = A
    16 0 7个MSB

    The remainders read from bottom to top gives the equivalent hexadecimal number i.e., (1954)10 = (7A2)16.

    从下到上读取的余数给出等效的十六进制数,即(1954) 10 =(7A2) 16

    Fractional Part

    小数部分

        0.785 * 16 = 12.56 = C.56     (MSB)
        0.56 * 16 = 8.96
        0.96 * 16 = 15.36 = F.36
        0.36 * 16 = 5.76
        0.76 * 16 = 12.16 = C.16    (LSB)
    
    

    The integer part of the product term read from top to bottom forms the equivalent hexadecimal number i.e., (0.785)10 = (0.C8F5C)16.

    从上到下读取的乘积项的整数部分形成等效的十六进制数,即(0.785) 10 =(0.C8F5C) 16

    After converting both integral part and fractional part individually into hexadecimal, now we combine both to get our desired result i.e., (1954.785)10 = (7A2.C8F5C)16.

    将整数部分和小数部分分别转换为十六进制后,现在我们将两者结合起来即可得到所需的结果,即(1954.785) 10 =(7A2.C8F5C) 16

    Example 2:

    范例2:

    Convert (3283.715)10 to ( ? )16

    将(3283.715) 10转换为(?) 16

    Solution:

    解:

    Integral Part

    整体部分

    DivisorQuotientRemainder
    163283
    162053 LSB
    161213=D
    16012=C MSB
    除数
    16 3283
    16 205 3 LSB
    16 12 13 = D
    16 0 12 = C高位

    The remainders read from bottom to top gives the equivalent hexadecimal number i.e., (3283)10 = (CD3)16.

    从下到上读取的余数给出等效的十六进制数,即(3283) 10 =(CD3) 16

    Fractional Part

    小数部分

        0.715 * 16 = 11.44 = B.44   (MSB)
        0.44 * 16 = 7.04
        0.04 * 16 = 0.64
        0.64 * 16 = 10.24 = A.24    (LSB)
    
    

    The integer part of the product term read from top to bottom forms the equivalent hexadecimal number i.e., (0.715)10 = (0. B70A)16.

    从上到下读取的乘积项的整数部分形成等效的十六进制数,即(0.715) 10 =(0. B70A) 16

    After converting both integral part and fractional part individually into hexadecimal, now we combine both to get our desired result i.e., (3283.715)10 = (CD3. B70A)16.

    在将整数部分和小数部分分别转换为十六进制之后,现在我们将两者合并以获得所需的结果,即(3283.715) 10 =(CD3。B70A) 16

    Example 3:

    范例3:

    Convert (356.225)10 to ( ? )16

    将(356.225) 10转换为(?) 16

    Solution:

    解:

    Integral Part

    整体部分

    DivisorQuotientRemainder
    16356
    16224 LSB
    1616
    1601 MSB
    除数
    16 356
    16 22 4 LSB
    16 1个 6
    16 0 1个MSB

    The remainders read from bottom to top gives the equivalent hexadecimal number i.e., (356)10 = (164)16.

    从下到上读取的余数给出等效的十六进制数,即(356) 10 =(164) 16

    Fractional Part

    小数部分

        0.225 * 16 = 3.600		(MSB)
        0.600 * 16 = 9.600
        0.600 * 16 = 9.600
        0.600 * 16 = 9.600		(LSB)
    
    

    The integer part of the product term read from top to bottom forms the equivalent hexadecimal number i.e., (0.225)10 = (0.39)16.

    从上到下读取的乘积项的整数部分形成等效的十六进制数,即(0.225) 10 =(0.3 9 ) 16

    After converting both integral part and fractional part individually into hexadecimal, now we combine both to get our desired result i.e., (356.225)10 = (164.39)16.

    在将整数部分和小数部分分别转换为十六进制之后,现在我们将两者结合以获得所需的结果,即(356.225) 10 =(164.3 9 ) 16

    翻译自: https://www.includehelp.com/basics/conversion-of-decimal-number-system-into-hexadecimal-number-system.aspx

    十进制数转换为十六进制数

    展开全文
  • 十进制最高位 inc cx ;自增指令,使CX自增,读取下一位数据 inc DI ;使指针DI自增1,指向存储下一位数字的地址 mov ax,dx;把余数传给AX mov bx,1000d;除数 xor dx,dx;异或运算相当于将dx置0 div bx ;余数在dx...
  • labview十六进制转十进制,输入字符串控件是十六进制显示。
  • 十六进制转十进制和BCD算法(汇编)是应wahllfok的要求上传的,wahllfok原本需要BCD转十六进制的算法,我最近有点忙只有这个逆算法(几年前写的),希望能给你借鉴。有时间我再写一个。 这个算法分两个子程序,一个...
  • 十进制数字拆分成4字节十六进制数.vi十进制数字拆分成4字节十六进制数.vi
  • 16进制10进制例程,十六进制转十进制,十六进制,十进制,属于入门级教程源码,由尽在眼前写的例子
  • 个八位十六进制数字,装换为二进制,然后取其补码,然后求其平均值。用c编写,代码稍微有点问题,大家可以完善下
  • 用汇编实现十六进制数向十进制数的转换 一、实现功能 实现一位十六进制数向十进制数的转换。 二、设计分析       汇编语言中,字符在机器中都是以ascii码的二进制格式存储,但是汇编语言写的时候常用...
  • 本文主要讲了单片机16进制10进制数,下面一起来学习一下
  • 易语言模块十进制转化为十六进制5.rar 易语言模块十进制转化为十六进制5.rar 易语言模块十进制转化为十六进制5.rar 易语言模块十进制转化为十六进制5.rar 易语言模块十进制转化为十六进制5.rar 易语言模块...
  • matlab十六进制转十二进制代码char2hex-hex2char 将十进制整数字符串转换为十六进制表示形式,然后再返回到Matlab中。 版本1.2,2016年4月21日 下载资料库: 返回一个二维字符串数组,其中每行是S行中每个十进制整数...
  • STM32十六进制字符串转十进制数值STM32十六进制字符串转十进制数值STM32十六进制字符串转十进制数值
  • 进制转换:二进制、八进制、十六进制十进制之间的转换 不同进制之间的转换在编程中经常会用到,尤其是C语言。 将二进制、八进制、十六进制转换为十进制 二进制、八进制和十六进制十进制转换都非常容易,就是...
  • 十六进制数和十进制数相互转换 汇编课设,有源代码,有报告,超全~~~
  • 十进制转十六进制.cpp

    2020-12-05 15:59:16
    十进制转十六进制.cpp

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 173,895
精华内容 69,558
关键字:

十六进制数转十进制