找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 12077|回复: 8
打印 上一主题 下一主题
收起左侧

51单片机中如何将一个数据的高4位和低四位求出来

[复制链接]
跳转到指定楼层
楼主
ID:252885 发表于 2017-12-31 14:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
51单片机中如何将一个数据的高4位和低四位求出来
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:213173 发表于 2017-12-31 16:17 | 只看该作者

回复

使用道具 举报

板凳
ID:241595 发表于 2017-12-31 17:13 | 只看该作者
unsigned char g_date = 0xfb;
unsigned char g_ldate = 0;
unsigned char g_hdate = 0;
g_ldate = g_date & 0x0f;
g_hdate = (g_date & 0xf0) >> 4;
回复

使用道具 举报

地板
ID:269558 发表于 2017-12-31 18:58 来自手机 | 只看该作者
可以通过分别或运算
回复

使用道具 举报

5#
ID:164602 发表于 2017-12-31 19:36 | 只看该作者
如果你懂得二进制、十六进制数的组成原理,就没什么问题了。
就以你说的“高四位、低四位”共8位的数为例子,加以说明吧。
第一:二进制(笨办法)
11111111=1*2^7+1*2^6+1*2^5+1*2^4+1*2^3+1*2^2+1*2^1+1*2^0=128+64+32+16+8+4+2+1
=255
设你取得的8位数据为x,则:
x/128=第7位是0或是1
(x%128)/64=第6位的0或1
(x%64)/32=第5位的0或1
(x%32)/16=第4位的0或1
......
所有位都找出来了。
(肯定有人喷我了,我说的是原理,不是真正程序的操作方法)
第二:十六进制(通常办法)
x=11111111=FF=15*16^1+15*16^0=240+15=255
(x/16)=第2位0~15的一个值
(x%16)=第1位0~15的一个值
这就是你要的高四位和低四位的值。在实际应用中,如用数码管显示红外遥控的十六进制键码,就是这样做的。
还需要不需要我讲把x转换为十进制数呢?算了,一下都讲了吧
第三:十进制
(x/100)=百位数
(x%100)/10=十位数
(x%10)/1=个位数。

回复

使用道具 举报

6#
ID:269573 发表于 2017-12-31 19:51 | 只看该作者
使用移位>>或<<,全变成低四位,然后进行位与运算
回复

使用道具 举报

7#
ID:123289 发表于 2017-12-31 22:21 | 只看该作者
将数据与0FH相与就得到低四位。
将数据进行SWAP,再做上述动作,就得到高四位。
回复

使用道具 举报

8#
ID:156265 发表于 2018-1-1 14:27 | 只看该作者
uchar date = 0xaa;
uchar dat_high = 0;
uchar dat_low = 0;
dat_high =date & 0x0f;
dat_low = (date & 0xf0) >> 4;
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表