精华内容
下载资源
问答
  • 众所周知, 内存地址空间是用16进制的数据表示, 如0x8049324, 那为什么需要用十六进制表示呢? 十六进制的意义何在?   编程中,我们常用的还是10进制.毕竟C/C++是高级语言。 比如:int a = 100,b = 99; ...

    众所周知, 内存地址空间是用16进制的数据表示, 如0x8049324, 那为什么需要用十六进制表示呢? 十六进制的意义何在?

     

    编程中,我们常用的还是10进制.毕竟C/C++是高级语言。   

    比如:int a = 100,b = 99;   

    不过,由于数据在计算机中的表示,最终以二进制的形式存在,所以有时候使用二进制,可以更直观地解决 问题。但二进制数太长了。比如int 类型占用4个字节,32位。比如100,用int类型的二进制数表达将是:   

    0000 0000 0000 0000 0110 0100   

    面对这么长的数进行思考或操作,没有人会喜欢。因此,C,C++ 没有提供在代码直接写二进制数的方法。用16进制或8进制可以解决这个问题。因为,进制越大,数的表达长度也就越短。

     

    不过,为什么偏偏是16或8进制,而不其它的,诸如9或20进制呢?2、8、16,分别是2的1次方,3次方,4次方。这一点使得三种进制之间可以非常直接地互相转换。8进制或16进制缩短了二进制数,但保持了二进制数的表达特点。
     

    十六进制的意义:
    1.用于计算机领域的一种重要的数制   

    2.对计算机理论的描述,计算机硬件电路的设计都是很有益的。比如逻辑电路设计中,既要考虑功能的完备,还要考虑用尽可能少的硬件,十六进制就能起到一些理论分析的作用。比如四位二进制电路,最多就是十六种状态,也就是一种十六进制形式,只有这十六种状态都被用上了或者尽可能多的被用上,硬件资源才发挥了尽可能大的作用。   

    3.十六进制更简短,因为换算的时候一位16进制数可以顶4位2进制数。

     

    十六进制的表示:
    C语言、Shell、Python语言及其他相近的语言使用字首“0x”,例如“0x5A3”。开头的“0”令解析器更易辨认数,而“x”则代表十六进制(就如“O”代表八进制)。在“0x”中的“x”可以大写或小写。

     

    然后再说内存:

    一个内存地址存着一个对应的值, 内存就相当于(addr,val)的大hash表,c语句的语义基本就是改变hash值。

    如 int i = 3; 
    假设 i的内存地址为 0x8049320 ,那么这句话的语义是0x8049320 = 3,经过i = 3后,i为(0x8049320,3)

    int b = i;
    假设 b的内存地址为 0x8049324 ,那么这句话的语义是0x8049324 = i对应的val = 3,此时b为(0x8049324,3)


    参考: 

    十六进制
    http://baike.baidu.com/view/230306.htm

    理解C指针: 一个内存地址对应着一个值 
    http://www.cppblog.com/hex108/archive/2011/06/18/124234.html

    作者:BobLiu 
    邮箱:lzd_ren@hotmail.com
    出处:http://www.cnblogs.com/liuzhendong
    本文版权归作者所有,欢迎转载,未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

    展开全文
  • 进制转R进制进制转二进制进制整数转二进制进制整数转换成二进制采用“除2倒取余”,十进制小数转换成二进制小数采用“乘2取整”。 例题: 135D = __ B 解析:如下图所示,将135除以2,得余数,直到...

    1.十进制转R进制

    1.1 十进制转二进制

    十进制整数转二进制

    十进制整数转换成二进制采用“除2倒取余”,十进制小数转换成二进制小数采用“乘2取整”。

    例题: 135D = ______ B

    **解析:**如下图所示,将135除以2,得余数,直到不能整除,然后再将余数从下至上倒取。得到结果:1000 0111B.
    这里写图片描述

    图1.十进制整数转二进制

    十进制小数转二进制

    十进制小数转换成二进制小数采用 “乘2取整,顺序排列” 法。

    具体做法是:

    用2乘十进制小数,可以得到积,将积的整数部分取出,再用2乘余下的小数 部分,又得到一个积,再将积的整数部分取出,如此进行,直到积中的小数部分为零,或者达到所要求的精度为止。

    然后把取出的整数部分按顺序排列起来,先取的整数作为二进制小数的高位有效位,后取的整数作为低位有效位。

    例题: 0.68D = ______ B(精确到小数点后5位)

    **解析:**如下图所示,0.68乘以2,取整,然后再将小数乘以2,取整,直到达到题目要求精度。得到结果:0.10101B.

    在这里插入图片描述

    图2.十进制小数转二进制

    1.2 十进制转八进制

    思路和十进制转二进制一样,参考如下例题:

    例题: 10.68D = ______ Q(精确到小数点后3位)

    **解析:**如下图所示,整数部分除以8取余数,直到无法整除。小数部分0.68乘以8,取整,然后再将小数乘以8,取整,直到达到题目要求精度。得到结果:12.534Q.

    这里写图片描述

    图3.十进制转八进制

    1.3 十进制转十六进制

    思路和十进制转二进制一样,参考如下例题:

    例题: 25.68D = ______ H(精确到小数点后3位)

    **解析:**如下图所示,整数部分除以16取余数,直到无法整除。小数部分0.68乘以16,取整,然后再将小数乘以16,取整,直到达到题目要求精度。得到结果:19.ae1H.

    这里写图片描述

    图4.十进制转十六进制
    # 2.R进制转十进制 ## 2.1 二进制转十进制 **方法为:**把二进制数按权展开、相加即得十进制数。(具体用法如下图)

    例题: 1001 0110B = ______ D

    **解析:**如下图所示。得到结果:150D.

    这里写图片描述

    图5.二进制转十进制

    2.2 八进制转十进制

    八进制转十进制的方法和二进制转十进制一样。

    例题: 26Q = ______ D

    **解析:**如下图所示。得到结果:22D.

    这里写图片描述

    图6.八进制转十进制

    2.3 十六进制转十进制

    例题: 23daH = ______ D

    **解析:**如下图所示。得到结果:9178D.

    这里写图片描述

    图7.十六进制转十进制

    3.二进制转八进制

    二进制转换成八进制的方法是,取三合一法,即从二进制的小数点为分界点,向左(或向右)每三位取成一位。

    例题: 1010 0100B = ____Q

    **解析:**计算过程如下图所示。得到结果:244Q.

    这里写图片描述

    图8.二进制转八进制

    4.二进制转十六进制

    二进制转换成八进制的方法是,取四合一法,即从二进制的小数点为分界点,向左(或向右)每四位取成一位。

    例题: 1010 0100B = ____H

    **解析:**计算过程如下图所示。得到结果:a4H.

    这里写图片描述

    图9.二进制转十六进制

    5.工欲善其事,必先利其器

    下面的表格是8位二进制所对应的十进制数值,对进制转换以及类似题目的理解非常有用:

    11111111B
    1286432168421D

    注:B:二进制
           D:十进制


    例题: 135D = ______ B

    **解析:**有了上面二进制对应十进制数值的表格,我们就可以将题目给的十进制135拆分为:128+7,再从表格中找到对应的数值,拼凑即可得到答案。
    135D = 128D + 7D = 1000 0111B

    展开全文
  • 设置四位十六进制数已经存放在AX存储器中。对四位十六进制数进行逐位显示,由于每位显示的过程是相同的采用子程序结构进行编程。 STACK1 SEGMENT STACK ;堆栈段 DW 256 DUP(?) STACK1 ENDS DATA SEGMENT ;数据段 ...

    显示四位十六进制数的程序。
    我们以数据0A490H为例。
    (1)明确任务,确定算法
    设置四位十六进制数已经存放在AX存储器中。对四位十六进制数进行逐位显示,由于每位显示的过程是相同的采用子程序结构进行编程。将四位十六进制数分解成两位显示,再把两位十六进制数分解成一位显示。这样,显示四位十六进制的子程序调用显示成两位十六进制数的子程序,显示两位十六进制数的子程序调用显示一位十六进制数的子程序。
    STACK1 SEGMENT STACK ;堆栈段
    DW 256 DUP(?)
    STACK1 ENDS
    DATA SEGMENT ;数据段
    DATA1 DW 0A490H
    DATA ENDS
    CODE SEGMENT ;代码段
    ASSUME CS:CODE,DS:DATA
    START: MOV AX,DATA
    MOV DS,AX ;设置 DS 寄存器
    MOV AX,DATA1
    CALL DISP4 ;调用子程序DISP4
    INT 20H
    DISP4 PROC NEAR
    PUSH BX
    PUSH CX
    PUSH DX
    PUSH AX
    MOV AL,AH ;将AH赋值给AL
    CALL DISP2 ;调用子程序DISP2
    POP AX
    CALL DISP2
    POP DX
    POP CX
    POP BX
    RET
    DISP4 ENDP
    DISP2 PROC NEAR
    MOV BL,AL ;将AL的值赋给BL
    MOV DL,AL ;将AL的值赋给DL
    MOV CL,4
    ROL DL,CL ;循环左移4位
    AND DL,0FH ;DL和0FH相与
    CALL DISP1
    MOV DL,BL
    AND DL,0FH
    CALL DISP1 ;调用子程序DISP1
    RET
    DISP2 ENDP
    DISP1 PROC
    OR DL,30H ;DL的值和30H相加
    CMP DL,3AH ;DL的值和3AH比较
    JB DDD
    ADD DL,07H ;DL的值加07H
    DDD:
    MOV AH,2 ;显示字符
    INT 21H
    RET
    DISP1 ENDP
    CODE ENDS
    END START

    (2)同理,显示两位十六进制数的程序,以数据0A4H为例。
    STACK1 SEGMENT STACK
    DW 256 DUP(?)
    STACK1 ENDS
    DATA SEGMENT
    DATA1 DW 0A4H
    DATA ENDS
    CODE SEGMENT
    ASSUME CS:CODE,DS:DATA
    START: MOV AX,DATA
    MOV DS,AX
    MOV AX,DATA1
    CALL DISP2
    INT 20H
    DISP2 PROC NEAR
    MOV BL,AL
    MOV DL,AL
    MOV CL,4
    ROL DL,CL
    AND DL,0FH
    CALL DISP1
    MOV DL,BL
    AND DL,0FH
    CALL DISP1
    RET
    DISP2 ENDP
    DISP1 PROC
    OR DL,30H
    CMP DL,3AH
    JB DDD
    ADD DL,07H
    DDD:
    MOV AH,2
    INT 21H
    RET
    DISP1 ENDP
    CODE ENDS
    END START

    展开全文
  • Deleted User..10计算机不使用十六进制.... 0"但是因为将二进制数表示0和1的字符串使得它们难以阅读,所以将十六进制用作快捷方式:4组(那些1和0信息)表示一个十六进制数字.这种从二进制转换为十六进制,反之亦然...

    Deleted User..

    10

    计算机不使用十六进制.计算机中没有处理十六进制值的组件.相反,计算机大多数情况下使用二进制值,数字"是"和"否"信息,表示为"施加电压"和"无电压",也称为"hi"和"lo",或"1"和"1". 0"

    但是因为将二进制数表示为0和1的字符串使得它们难以阅读,所以将十六进制用作快捷方式:4位组(那些1和0信息)表示为一个十六进制数字.这种从二进制转换为十六进制,反之亦然,非常简单.将二进制转换为十进制或十进制转换为二进制涉及更多操作.

    因此,十六进制系统不是由计算机使用,而是由人类使用,用于表示二进制数字,但比从/到十进制数字系统更容易转换.

    十六进制数具有另一个特征,它使它们优于十进制数:两个数字之间的变化仅涉及翻转一个或几个比特并不罕见.得到的十进制数看起来非常不同 - 更改位的值越高,越不同.在十六进制数字中,只有覆盖已更改位的数字会发生变化,其余数字会保留其值.这有助于在心理上将这些十六进制数字所代表的值分组.

    除了十六进制之外,还经常使用八进制系统.它的缺点是一个八进制数字仅描述一组3位,而不是4.因为计算机中的二进制数字(例如地址)通常具有2的幂范围,这些数字更适合组成四组而不是组三个.

    人类没有"被迫"使用十六进制来组装.这只是一件方便的事情.

    +1.当我处理2或位掩码的幂时,我倾向于使用十六进制表示法,而对于其他所有其他东西,我倾向于使用十进制表示法. (2认同)

    展开全文
  • 二进制转换为十六进制数是Prerequisite: Number systems 先决条件: 数字系统 Converting binary numbers into hexadecimal numbers is similar to the conversion of binary into octal, it just requires some ...
  • 数制有很多种,在计算机中常用的数制有:十进制,二进制和十六进制。1. 十进制数人们通常使用的是十进制。它的特点有两个:有0,1,2….9十个基本字符组成,十进制数运算是按“逢十进一”的规则进行的.在计算机中,...
  • 实现任意输入四位十六进制整数,以反序的方式输出十六进制数。例如:输入9AF0,则输出0FA9.
  • 众所周知, 内存地址空间是用16进制的数据表示, 如0x8049324, 那为什么需要用十六进制表示呢? 十六进制的意义何在?   编程中,我们常用的还是10进制.毕竟C/C++是高级语言。 比如:int a = 100,b = 99; 不过,...
  • 这个问题是在处理485解帧时,存在几位十六进制代表所需要的值,想知道一种方法直接得到所需的值 解决方法:http://bbs.csdn.net/topics/391029805 问题: 例如: char sDec[4] = {0x05,0xc5,0xb3,0xea}; ...
  • 4.为什么引入八进制、十六进制?(1)二进制转换?(2)十六进制转换? 1.计算机为什么采用二进制? 因为二进制是在电路中最好控制的,只有1和0两种状态.代表接通和关闭电路的状态 2.为什么引入字节? 1字节(byte...
  • //有符号字节转换 public static int Int32ToInt4Y(byte[] byt) { Array.Reverse(byt); return BitConverter.ToInt32(byt, 0); } //单精度数转换,注意reverse public static float FloatToFloat4Y(byte...
  • printf("请输入一个任意的四位十六进制整数:\n"); scanf("%4x",&num); a = num >> 12; //最高位变成最低位 b = (num & 0x0f00) >> 4; //第三位置换成第二位(从左往右) c = ...
  • 编写程序把从键盘输入的四位十六进制的数,转化十进制并且在屏幕上打印出来
  • 用汇编实现两个四位十六进制的数相加。得出的结果能更好的实现汇编的应用。
  • C++-bit转hex(四位二进制转十六进制

    千次阅读 多人点赞 2021-07-27 14:13:16
    C++代码实现4二进制转为十六进制
  • 顾而有16进制每一上可以是从小到大0、1、2、3、4、.网上那些计算器我也不知道怎么用,我求一个把数字转换16进制的软件,。开始——所有程序——附件——计算器 查看——程序员 输入十进制数字然后点“十六进制...
  • 十六进制转换二进制很简单,我们首先要明白,一位十六进制代表四位二进制,如F对应二进制的1111,A代表二进制的1010,利用这种一一对应的关系,很容易就把十六进制转换二进制,如0x1F6C,其中十六进制1对应二...
  • 为什么计算机以汇编语言使用十六进制数字系统? 他们为什么不使用其他数字系统,例如二进制,八进制,十进制? 什么事情迫使计算机设计师在组装时使用十六进制系统? 为什么它看起来对他们如此有益?嗯,我很确定,...
  • 十六进制

    2016-11-02 22:37:16
    十六进制什么十六进制,类似于十进制,但是十六进制有十六个基数: 1,2,3,4,5,6,7,8,9,A,B,C,D,E,F Are you kinding me? 当然了,不逗你逗谁啊! 十六进制多出来的一串字母确实很难让人接受,你可能会问10去哪...
  • 四位二进制、十进制、四位十六进制相互转换(高位补零)四位二进制转十进制十进制转四位二进制十进制转十六进制十进制转四位十六进制四位十六进制转十进制 四位二进制转十进制 int(i, 2) 十进制转四位二进制 '{:04b...
  • 进制转换1.二进制转十六进制2.十六进制转二进制 1.二进制转十六进制 注:十六进制一般以0x开头,...二进制转16进制时,每四位二进制对应十六进制一位。 2.十六进制转二进制 将十六进制的一位拆成对应的四位二进制 ...
  • 最近学习如何将图片以六十四位编码的形式写入xml文档,以前代码写的有误,以至于将一人个500K的文件存储后变成了13M。经过在网上查询,终于找到了原因。将图片保存成二进制。代码如下FileStream fs = new FileStream...
  • 二进制数到十六进制数的转换 基本原理:由于十六进制数基数是2的次幂,所以一个二进制转换为十六进制,如果是整数,只要从它的低位到高位每4组成一组,然后将每组二进制数所对应的数用十六进制表示出来。...
  • 汇编语言:将四位十六进制数转换成二进制数题目要求运行截图编程平台代码实现 题目要求 从键盘接收一个四位十六进制数,将其转换成二进制数后输出,不考虑错误输入。 运行截图 编程平台 Masm for Windows 集成...
  • VC 进制转换,可完成以下转换:转换十进制数,转换二进制数,转换十六进制数,转换十六进制为二进制,转换一位十六进制十进制,转换二进制为十六进制,位数不是四的倍数时补齐,每四位二进制数转换一十六进制...
  • 编程中,我们常用的还是10进制.毕竟C/C++是高级语言。 比如:int a = 100,b = 99; 不过,由于数据在计算机中的表示,最终以二进制的形式存在,所以有时候使用二进制,可以更直观地解决 问题。但二进制数太长了。...
  • 将二进制、八进制、十六进制转换十进制 二进制、八进制和十六进制向十进制转换都非常容易,就是“按权相加”。所谓“权”,也即“权”。 假设当前数字是N进制,那么: 对于整数部分,从右往左看,第i权...
  • 十六进制转十进制 19007/16商1187余15(F) 1187/16商74余3 74/16商4余10(A) 4/16商0余4 所以是4A3F 十六进制表示是0x4A3F
  • 1、显示四位0A49H十六进制数 DATA SEGMENT DATA1 DW 0A490H DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV AX,DATA1 CALL DISP4 INT 20H DISP4 PROC NEAR PUSH BX PUSH...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 111,203
精华内容 44,481
关键字:

十六进制为什么是四位