精华内容
下载资源
问答
  • 十六进制之间的加减

    2019-08-25 10:18:48
    64位有符号整数a 0x7FFFFFFFFFFFFFFF 和 b0x8000000000000000相加,之后10进制数? 0x7FFFFFFFFFFFFFFF 0x8000000000000000 0xFFFFFFFFFFFFFFFF(16个F) 16个F就是64个1,由于二进制有符号数都是用最高位...

    64位有符号整数a   0x7FFFFFFFFFFFFFFF 和 b 0x8000000000000000相加,之后的10进制数?

        0x7FFFFFFFFFFFFFFF
        0x8000000000000000
        0xFFFFFFFFFFFFFFFF(16个F)
        16个F就是64个1,由于二进制有符号数都是用最高位作为符号位,计算机作为存储负数用的是补码方式,其计算方式:
        正数,原码和补码相同。
        负数,需要除了符号位之外所有的位要按位取反,之后末尾+1.
        所以对于
        0xFFFFFFFFFFFFFFFF就有64个1(一个F为4个1),所以要减去-1,之后按位取反得到二进制数11,由于0
        表示正,1表示负数,所以是-1.

    展开全文
  • (1)实现十六进制补码加减乘计算; (2)使用方法。把本脚本命名为calc.py。在terminal中输入python calc.py string。即可根据输入个string做计算。如,输入python calc.py 50x10*50x0f,既可以得到100x310。这里...
    脚本介绍:

    (1)实现十六进制补码加减乘计算;

    (2)使用方法。把本脚本命名为calc.py。在terminal中输入python calc.py string。即可根据输入的string做计算。如,输入python calc.py 50x10*50x0f,既可以得到100x310。这里的输入数据和输入都是用补码形式计算的。0x表示输入数是16进制,0x前的数表示该数的位宽,0x后面的数是参与运算的数值。这个例子就实际上就是计算-16*15,计算结果为-240。

    (3)这里使用了sys,argv,str,int,eval,字符串的分割和拼接等。

    import sys
    
    print("This is a two's complement calculator\n")
    op_str = sys.argv[1]
    
    #get the operator and operand
    if "+" in op_str:
        op_num = op_str.split("+")
        op_a = op_num[0]
        op_b = op_num[1]
        op_s = "+"
    elif "-" in op_str:
        op_num = op_str.split("-")
        op_a = op_num[0]
        op_b = op_num[1]
        op_s = "-"
    elif "*" in op_str:
        op_num = op_str.split("*")
        op_a = op_num[0]
        op_b = op_num[1]
        op_s = "*"
    
    #obtain the operand and translate it to int
    op_a_l  = op_a.split("0x")
    op_a_width = int(op_a_l[0])
    op_a_num = int(op_a_l[1],16)
    
    op_b_l  = op_b.split("0x")
    op_b_width = int(op_b_l[0])
    op_b_num = int(op_b_l[1],16)
    
    #two's complement -> signed decimal
    if op_a_num >= 2**(op_a_width-1) :
        op_a_real = op_a_num - 2**op_a_width
    else:
        op_a_real = op_a_num
    
    if op_b_num >= 2**(op_b_width-1) :
        op_b_real = op_b_num - 2**op_b_width
    else:
        op_b_real = op_b_num
    
    #calculate the result width
    if op_s == "-" or op_s == "+":
        if op_a_width > op_b_width:
            op_result_width = op_a_width+1
        else:
            op_result_width = op_b_width+1
    else:
        op_result_width = op_a_width + op_b_width
    
    *use eval function
    op_result_str = str(op_a_real) + op_s + str(op_b_real)
    op_result_num = eval(op_result_str)
    
    #signed decimal -> two's complement
    if op_result_num <0:
        op_result_real = op_result_num + 2**op_result_width
    else:
        op_result_real = op_result_num
    
    #translate to hex
    op_result_hex = hex(op_result_real)
    
    #connect strings
    op_result= str(op_result_width)+op_result_hex
    
    #print the reuslt
    print("The result is %s"%(op_result))
    
    

     

    展开全文
  • 以单文件的形式,实现十六进制数类的构建,并通过运算符重载,定义十六进制数的加减乘除取整等运算。
  • 用汇编实现十六进制数向... 特别是进制转换一定要注意,机器中存储的是数的二进制数本身,而我们输入输出的是数的ascii码的值,因此注意对寄存器中数的加减操作。 实现十六进制数向十进制数的转换,先输入一位16进制

    用汇编实现十六进制数向十进制数的转换

    一、实现功能

    实现一位十六进制数向十进制数的转换。

    二、设计分析

          汇编语言中,字符在机器中都是以ascii码的二进制格式存储,但是汇编语言写的时候常用十六进制,因此需要好好看看ascii码的十六进制表。

          特别是进制转换一定要注意,机器中存储的是数的二进制数本身,而我们输入输出的是数的ascii码的值,因此注意对寄存器中数的加减操作

    1. 实现十六进制数向十进制数的转换,先输入一位16进制数,判断输入字符的ascii码在30H-39H(0-9)之间,还是在41H-46H(A-F)之间,或者是在61H-66H(a-f)之间。如果是第一种情况则SUB DL,30H,如果是第二种情况则SUB DL,37H,如果是第三种情况则SUB DL,57H。

    2. 接下来需要将DL中的二进制数转换为十进制数输出。这里我选择将DX除以10,商在AL中,用来表示十位数,余数在AH中,用来表示个位数,如果商是0,则不用输出;如果商是1,则ADD AH,30H,输出AH。余数ADD AL,30H,输出AL。即可得到16进制对应的十进制数。

    3. 注意输出的字符的值是不等于机器中存放的二进制的值,因此需要进行加减法)最后输出对应的16进制的ascii码的值。

    4. 十六进制数向十进制数的转换流程图:
      在这里插入图片描述

    三、源代码

    DATA SEGMENT
    	TIP DB 'INPUT THE NUMBER: ','$'
    	TIP1 DB '  <=>  ','$'
    DATA ENDS
    
    CODE SEGMENT
    	ASSUME CS:CODE,DS:DATA
    START:
    	MOV AX,DATA
    	MOV DS,AX
    	LEA DX,TIP
    	MOV AH,09H
    	INT 21H
    
    INPUT:
    	MOV AH,1
    	INT 21H
    	CMP AL,30H
    	JB EXIT
    	CMP AL,39H
    	JA COMPER1
    	JMP CHANGE1    ;0~9之间
    COMPER1:
    	CMP AL,41H
    	JB EXIT
    	CMP AL,46H
    	JA COMPER2
    	JMP CHANGE2    ;在A-F之间
    COMPER2:
    	CMP AL,61H
    	JB EXIT
    	CMP AL,66H
    	JA EXIT
    	JMP CHANGE3    ;在a~f之间
    
    CHANGE1:
    	SUB AL,30H
    	JMP ENT
    CHANGE2:
    	SUB AL,37H
    	JMP ENT
    CHANGE3: 
    	SUB AL,57H
    	JMP ENT
    ENT:
    	MOV BL,AL
    	LEA DX,TIP1
    	MOV AH,09H
    	INT 21H
    	MOV AL,BL
    	MOV AH,0
    	MOV BL,10
    	DIV BL
    	MOV DH,AH
    	CMP AL,0
    	JE ONE
    	MOV DL,AL      ;十位数是1
    	ADD DL,30H
    	MOV AH,02H
    	INT 21H
    ONE:	                        ;十位数是0
    	MOV DL,DH
    	ADD DL,30H
    	MOV AH,02H
    	INT 21H
    EXIT:
    	MOV AH,4CH
    	INT 21H
    CODE ENDS
    END START
    
    展开全文
  • 用汇编实现二进制数向十六进制数的转换 一、实现功能 ...特别是进制转换一定要注意,机器中存储的是数的二进制数本身,而我们输入输出的是数的ascii码的值,因此注意对寄存器中数的加减操作。   &nb

    用汇编实现二进制数向十六进制数的转换

    一、实现功能

    1)实现二进制数向十六进制数的转换
    2)实现十六进制数向二进制数的转换‘

    二、设计分析

          汇编语言中,字符在机器中都是以ascii码的二进制格式存储,但是汇编语言写的时候常用十六进制,因此需要好好看看ascii码的十六进制表。

         特别是进制转换一定要注意,机器中存储的是数的二进制数本身,而我们输入输出的是数的ascii码的值,因此注意对寄存器中数的加减操作。

          四位二进制数对应一位十六进制数,这里写的也是四位二进制和一位十六进制之间的的转换

    • 实现四位二进制数向十六进制数的转换

    1. 先输入四位的二进制数,每输入一位二进制数就判断输入的时0还是1,即将该数和30H做比较。
    2. 将DL赋值为0。如果输入的数是0,则将DL和0进行或运算(也可以不进行逻辑运算直接移位),将DL的最后一位置为0;如果输入的数是1,则将DL和1进行或运算,将DL的最后一位置为1。然后将DL向左移一位。进行4次循环,级输入4为二进制数。四位输入完毕后,DL就得到输入数的二进制。
    3. 判断DL是否在0-9之间,如果在则ADD DL,30H;如果大于0-9,则ADD DL,37H。(注意输出的字符的值是不等于机器中存放的二进制的值,因此需要进行加法)最后输出对应的16进制的ascii码的值。如果小于0-9则JMP到程序开始重新输入功能序号。
    4. 二进制转十六进制的流程图:
    • 实现一个十六进制数向二进制数的转换

    1. 先输入一个16进制数,判断输入字符的ascii码在30H-39H(0-9)之间,还是在41H-46H(A-F)之间,或者是在61H-66H(a-f)之间。如果是第一种情况则SUB DL,30H,如果是第二种情况则SUB DL,37H,如果是第三种情况则SUB DL,57H。即可得到输入的十六进制数的值,而不是字符的ascii码的值。
    2. 最后需要将DL中的值以二进制输出,因为机器里存放的就是以二进制存放。这里我用循环左移的方式,从二进制的高位到低位一次循环打印。将循环左移一位后的数与1进行与运算,得到最低位的大小(也就是当前准备输出的位置的大小),然后加上30H,得到0/1的ascii码值,依次将DL的值进行输出。
    3. 需要注意,第2步进行与运算的时候不能再原来的寄存器上进行,否则只能得到一位二进制数,后面几位都没法求了。
    4. 一个十六进制数向二进制数的转换流程图:
      在这里插入图片描述

    三、设计分析

    四位二进制数向十六进制数的转换

    DATA SEGMENT
    	TIP DB 'INPUT THE NUMBER: ','$'
    	TIP1 DB '  <=>  ','$'
    DATA ENDS
    
    CODE SEGMENT
    	ASSUME CS:CODE,DS:DATA
    START:
    	MOV AX,DATA
    	MOV DS,AX
    	LEA DX,TIP
    	MOV AH,09H
    	INT 21H
    	MOV CH,4
    	MOV DL,0
    INPUT:
    	MOV AH,1
    	INT 21H
    	CMP AL,30H
    	JA L1              ;输入的是1
    	ROL DL,1
    	OR DL,0
    	JMP AGAIN
    L1:	
    	ROL DL,1
    	OR DL,1
    AGAIN:
    	DEC CH
    	JZ PRINT
    	JMP INPUT
    PRINT:
    	CMP DL,0
    	JB EXIT
    	CMP DL,9
    	JA COMPER1
    	ADD DL,30H
    	JMP HEN
    COMPER1:
    	ADD DL,37H
    HEN:
    	MOV AL,DL
    	LEA DX,TIP1
    	MOV AH,09H
    	INT 21H
    	MOV DL,AL 
    	MOV AH,02H
    	INT 21H
    EXIT:
    	MOV AH,4CH
    	INT 21H
    CODE ENDS
    END START
    

    实现一个十六进制数向二进制数的转换

    DATA SEGMENT
    	TIP DB 'INPUT THE NUMBER: ','$'
    	TIP1 DB '  <=>  ','$'
    DATA ENDS
    
    CODE SEGMENT
    	ASSUME CS:CODE,DS:DATA,SS:STACK
    START:
    	MOV AX,DATA
    	MOV DS,AX
    	LEA DX,TIP
    	MOV AH,09H
    	INT 21H
    INPUT:
    	MOV AH,1
    	INT 21H
    	CMP AL,30H
    	JB EXIT
    	CMP AL,39H
    	JA COMPER1
    	JMP CHANGE1    ;0~9之间
    COMPER1:
    	CMP AL,41H
    	JB EXIT
    	CMP AL,46H
    	JA COMPER2
    	JMP CHANGE2    ;在A-F之间
    COMPER2:
    	CMP AL,61H
    	JB EXIT
    	CMP AL,66H
    	JA EXIT
    	JMP CHANGE3    ;在a~f之间
    
    CHANGE1:
    	SUB AL,30H
    	JMP ENT
    CHANGE2:
    	SUB AL,37H
    	JMP ENT
    CHANGE3: 
    	SUB AL,57H
    	JMP ENT
    ENT:
    	LEA DX,TIP1
    	MOV AH,09H
    	INT 21H
    	MOV CH,8
    	MOV BL,AL	
    PRINT:	
    	ROL BL,1
    	MOV DL,BL
    	AND DL,1
    	ADD DL,30H
    	MOV AH,02H
    	INT 21H
     	DEC CH
    	JZ EXIT
    	JMP PRINT
    EXIT:
    	MOV AH,4CH
    	INT 21H
    CODE ENDS
    END START
    
    展开全文
  • 0xFFF+Ox33 = ??? 诸如此类。 输入结果仍然是十六进制的
  • 二进制、八进制、十六进制的概念以及加减运算

    千次阅读 多人点赞 2017-11-30 15:15:58
    我们平时使用数字都是由 0~9 共十个数字组成,例如 1、9、10、297、952 等,一个数字最多能表示九,如果要表示十、十一、二十九、...因为逢十进一(满十进一),也因为只有 0~9 共十个数字,所以叫做十进制(Decim
  • 本来想把十六进制的数先转化为十进制的数相加,然后再转化为十六进制的数输出,网上一搜,原来C语言如此强大,可以直接用十六进制输入,十六进制的数输出。非常气氛学校开学没学C语言,来就开始学C++;导致C语言中...
  • 大整数存储、运算和显示,可以同时支持二进制和十进制,但至少要支持十进制。大整数输出显示时,必须能清楚地表达出整数位数。测试时,各种情况都需要测试,并附上测试截图;要求测试例子要比较详尽,各种极限...
  • 十六进制转十进制

    2021-01-19 18:07:55
    把十进制转化为十六进制只需要把十进制数的n位乘16的n一次方即可。把A转化为10则用了ASCII码的偏差值,A的ASCII码是65,所以只需要将ASCII码大于65的值6510就可得到十进制数。 import java
  • 有时需要对十六进制数做加减乘除,某些手机app能实现此功能,但使用起来未免有些麻烦,其实Windows自带的计算器就可以实现十六进制数的运算。 1.找到并打开计算器 2.点击如图所示的位置 3.点击程序员选项 ...
  • 说明:%I64X:用大写字母输出无符号的十六进制数,也就是说无法输出负数。一个简单写法,负数取绝对值,个负号即可。 下面转载了一段关于__int64用法说明:__int64使用方法#include using namespace std; ...
  • 十进制、二进制和十六进制间1~15各自对应数值。 二进制数加、、乘、除四则运算。 运算:0+0=0,0+1=1,1+0=1,1+1=10,(逢2进1); 运算:1-1=0,1-0=1,0-0=0,0-1=1,(向高位,借1当2); 乘运算:0×0...
  • 进制转换app就是一个简洁的进制转换器,一个由Flutter跨平台工具构建,包含了2、8、10、16进制整数、小数的相互转换,以及简单的加减计算的app。所有功能都集成在同一界面实现,易于操作和使用,一目了然的操作界面...
  • 转十进制: 就直接把二进制数中 1 位数一对应到2幂上,再求和 如下:128+0+32+0+0+4+0+1=165 其中128是二进制位数8-1=727次幂 转八进制: 可以从右向左看,每三个数画一条线 如: 10 100 101 分开后发现...
  • 十六进制计数器.docx

    2019-05-23 18:24:18
    P2 口接动态数码管 D2 字形码笔段,P1.6 和 P1.7 接动态数码管的数位选择端(低电平有效);P1.5 接一个单刀双掷开关 SW1,SW1 再分别接到高电平和低电平;P1.0和 P1.1 分别各接一个按钮 ADD 和 DEL;P1.4 接一个 ...
  • 按照操作数的数目进行划分 单目 a++ 双目 a+b 三目 (a>b)?x:y 按照运算符功能进行划分 算数运算 +、 -、 *、 /:、乘、除 %:取余、取模 ++:自增 (放在变量前面先后用;放在变量后面...
  • 学习了有理数的加减运算以后,再来进行有理数的乘除,就比较容易理解和运算了。首先我们来看有理数的乘法法则:两相乘,同号得正,异号得负,并把绝对值相乘;任何与零相乘,积仍为0。有理数乘法法则和有理数加...
  • 进制数的计算3.1.加减乘除3.2.反码和补码3.2.1反码,补码的求法3.2.2.关于符号的问题3.2.3.补码的意义 2. 不同数制之间的转换 2.1. 十进制和二进制之间的转换 方法一:除2取余法 方法二:这个方法非常快捷...
  • 汇编语言基础-第二章

    2020-10-04 12:38:57
    目录数据表示二进制:十六进制:转换数补码:BCD码:常量变量存储方式属性寻址方式 数据表示 二进制: 便于计算机存储及物理实现 特点:逢二进一,由0和1两个数码组成...十六进制数的加减:逢16进位1,借1当16 转换 每
  • 以上定义的两个数据都是机器码形式(二进制/十六进制),它们可能是无符号数(的补码形式)236和2,也可能是有符号数的补码形式-20和20,(机器内部的计算都是以补码形式进行),所以无法直接看出它们的真值(十进制...
  • 工作原理:单片机具有较强的计算功能,利用控制器上的键盘显示即可设计简单的计算器。把16个键分别赋予0~9十个数字键、...3.要求能进行双字节十六进制数的加减乘除运算; 4.运算结果大于四位时,采用自动分屏显示。
  • 汇编语言基础知识汇编语言组成汇编指令:就是机器指令的助记符伪指令其他符号计算机中数的表示2^10=1K2^20=1M2^30=1G2^40=1T进制运算二进制运算:1+1=0(向高位进1)十六进制运算:掌握加减乘除运算补码运算补码表示:...
  • 进制转换

    2020-01-19 22:31:03
    计算方法?????????...10(int):用ans乘以x再从高位到低位加上字符串每一位数字即可(若位上是字母则a10) int XToDec(string s,int x) //将给定x进制字符串s转换成10进制 { int ans =...
  • 1能够实现基本的加减乘除运算,区分乘除、加减的优先级别,并实现括号的优先级别,运算符的混合运算都能基本实现; 2.界面上设置了多个函数,当界面上有数字时,按下键位就能够得到这个数的对应值; 3.添加了一个...
  • 在WinDBG中可以进行一些简单计算工作, 比如16进制与10进制之间相互转换, 加减乘除等. 举例1, 进制转换: 注意, 上面例子中第二个命令告诉我们, 十进制的数字在windbg中进行表示时候前面要加上前缀"0n...
  • 四位二进制来表示一个十六进制数 位运算 &位与运算 只有1&1为1,其余全为0 任何数与2n次方1为原数值 |位或运算 1|1=1,0|1=1,1|0=1,0|0=0 ^异或运算 00=0,10=0,01=1,10=1 位非运算 ~str.indef...
  • 展开全部可以先转换为十进制进行加减操作后再转换回十六进制即可封装两个函62616964757a686964616fe78988e69d8331333337376337:1、string.split用于分割字符串,传入要分割字符串和分隔符,返回分割后table...
  • 1、二进制、八进制、十进制及十六进制数的加、乘、除、乘方、取模等简单计算 2、科学计算函数,包括(反)正弦、(反)余弦、(反)正切、(反)余切、开方、指数等函数运行 3、以角度、弧度两种方式实现上述部分函数 4...
  • 文章目录文章背景UTF-7编码当中的加减号(+ -) 文章背景 来自于中科大2020年CTF比赛: 233 同学的字符串工具 本题要求了解UTF-7编码规范 UTF-7编码当中的加减号(+ -) 本题WP当中最令笔者奇怪的是答案当中的+ -,如图 ...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 134
精华内容 53
关键字:

十六进制数的加减