单片机地址为什么都要转换成十六进制表示 例如0xf4

如题所述

因为计算机内部数据是二进制的,而4位(bit)二进制数正好与1位十六进制数对应,也就是说2位十六进制数正好与一个字节对应(1Byte=8Bit),如果应用十进制的话就没有这个对应关系了!比如:11111111(B)=FF(H)=255(D)、10100010(B)=A2(H)=162(D),可以看出,8位二进制数对应2位十六进制数,十六进制数的每一位都与相应的4位二进制数对应,而十进制数上例中有3位十进制数,且每一位十进制数都无法确定与那几位二进制数对应!
这就是人们为什么都用十六进制数表示的原因,其实你也可以用其它的进制表示,但与二进制的对应关系你就没有象用十六进制表示的那样直观了!
就象你提到的0xF4人们一下子就知道对应的二进制数为1111 0100,如果我给你一个十进制的数117你能一下子看出对应的是几位二进制数吗?
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-05-23
首先你要对单片机有个初步的了解:
51单片机是8位处理器,最大寻址空间是64kb,而这64kb的空间需要多大的地址来表示呢,正好是16位,所以单片机的P0、P2口分别表示地址的低8位和高8位,而这16位地址的表示方法可以使用2进制、8进制、16进制,但是,为了表示的方便和书写的简洁,就采用了16进制表示方法;
希望你能明白!本回答被提问者采纳
第2个回答  2010-05-24
因为单片机语言是用 汇编语言 来实现的

汇编语言 是属于 低级语言
是我们的操作系统和电脑硬件的直接交流
电脑硬件(硬盘,寄存器,内存。。。)
都是用二进制语言进行存取的(对于这点,如果你问我为什么,我我也回答不了)

而像C,c++.........之类的
都属于 高级语言 而且都有很多程序库
我们可以直接调用
编写的时候也能用更平实话的语言进行编辑
但最终电脑要接受这些程序还是要同过转化成二进制语言的
但高级语言我们阅读的时候方便,更重要的是对于一个很简单的程式,我们编写的时候只要一句话就可以了,但如果换成低级语言的话 可能就要好几页

最简单的例子就是一个 sin( * *) 函数
第3个回答  2010-05-23
电脑都是2进制的。
你也可以用10进制的来写,只是不方便而已。

10H=16,64H=100。

所以一般都是用16进制来写程序。
第4个回答  2010-05-23
呵呵,没有办法回答。
想想时间吧:
分、秒,用60进制;
小时,用12或24进制;
日,......
月,......
周,......
年,365或366进制。
都是根据前人的经验总结,前人怎么定,就怎么用即可。
还是别研究这类问题了。

单片机地址为什么都要转换成十六进制表示 例如0xf4
因为计算机内部数据是二进制的,而4位(bit)二进制数正好与1位十六进制数对应,也就是说2位十六进制数正好与一个字节对应(1Byte=8Bit),如果应用十进制的话就没有这个对应关系了!比如:11111111(B)=FF(H)=255(D)、10100010(B)=A2(H)=162(D),可以看出,8位二进制数对应2位十...

0x00到0xff对应二进制表
0x00到0xff对应二进制表单片机中对寄存器或IO口操作都是用十六位进制表示,比如oxaa,代表二进制的1010(a) 1010(a)。在书写时0x代表十六位进制。0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,   0x10, 0...

单片机C51 16*16矩阵表示数字文字
sbit ST_CP =P3^2; \/\/74HC595(12)-ST_CP 上升沿--移位寄存器的数据进入数据存储寄存器 输出锁存器的时钟信号端口 sbit MR =P3^3; \/\/74HC595(10)-MR 为0将移位寄存器的数据清0 uchar code bmp[32*6]={ \/\/字模表 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00...

以16进制发送一个0-65536之间的任一数,当单片机收到后在数码管上动态...
SBUF=a;发回数据看接收到的数据是否正常 数码管转换的时候是没错的 估计是波特率的问题 12MHz晶振可以使用4800bsp的波特率 PCON=0x80;TH1 = 0xF3;TL1 = TH1;

单片机Keil5中16进制转换ASCII码的C语言函数
你这个例子并不是把要16进制数转换ASCII码,十六进制数只有0--F;所以,你先想清楚要的是什么;

单片机Keil5中16进制转换ASCII码的C语言函数
你这个例子并不是把要16进制数转换ASCII码,十六进制数只有0--F;所以,你先想清楚要的是什么;

急!基于单片机的数字示波器设计
它以单片机为核心,经过D\/A转换和放大电路的处理,最后输出反应弹体姿态的基准波形和测角波形。软件方面的编程:#include "reg52.h" #define uchar unsigned char#define uint unsigned intunsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,...

单片机串口乱码的原因
乱码就两个问题,一是显示的问题,你要是用串口助手的话勾选“十六进制显示”,还有就是波特率不对,你再计算一下吧。

md5 算法程序+详细注释,高分求教!
然后,在在这个结果后面附加一个以64位二进制表示的填充前信息长度。经过这两步的处理,现在的信息字 节长度=n*512+448+64=(n+1)*512,即长度恰好是512的整数倍。这样做的原因是为满足后面处理中对信息长度的要求。md5中有四个32位被称作链接变量(chaining variable)的整数参数,他们分别为:a=0x01234567,b=0x...

有线鼠标改无线鼠标为什么要编译码啊
0xF4用于在当主机发送0xF5禁止键盘后,重新使能键盘。3PS\/2键盘与单片机的连接电路PS\/2键盘与AT89C51单片机的连接方式如图4所示。P1.0接PS\/2数据线,P3.2(INT0)接PS\/2时钟线。因为单片机的P1、P3口内部是带上拉电阻的,所以PS\/2的时钟线和数据线可以直接与单片机的P1、P3相连接。4驱动程序设计驱动程序使用Keil ...

相似回答