找回密码
 立即注册

QQ登录

只需一步,快速开始

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

请教一下大家16位与8位怎么位或?谢谢

[复制链接]
跳转到指定楼层
楼主
ID:887685 发表于 2021-3-2 15:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如题
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:213173 发表于 2021-3-2 20:41 | 只看该作者
        unsigned int  a;
        unsigned char b;
        a|=b;    //低8位按位或
        a|=b<<8; //高8位按位或
回复

使用道具 举报

板凳
ID:592807 发表于 2021-3-3 08:31 | 只看该作者
wulin 发表于 2021-3-2 20:41
unsigned int  a;
        unsigned char b;
        a|=b;    //低8位按位或

也可以这样
int a;
char b;
int c;
a=(int)b|a;//强制转换类型

c = b;
c |=a;//加中间变量,低8位或
c|=(a<<8);//加中间变量,高8位或,

我一般不记逻辑符号的优先级,直接加括号省时省力。
回复

使用道具 举报

地板
ID:879348 发表于 2021-3-3 08:45 | 只看该作者
直接操作,编译器会处理
回复

使用道具 举报

5#
ID:549582 发表于 2021-3-3 09:09 | 只看该作者
假如定义8位为a,16位为b.b=b<<8|a;这样就可以了
回复

使用道具 举报

6#
ID:887685 发表于 2021-3-3 09:56 | 只看该作者
wulin 发表于 2021-3-2 20:41
unsigned int  a;
        unsigned char b;
        a|=b;    //低8位按位或

如果
unsigned int a;
unsigned char b;
unsigned char c;
c=a|b;
那a的高八位是按0补还是按1补位啊?
我知道与是低八位是按位与,高八位是补0。
回复

使用道具 举报

7#
ID:887685 发表于 2021-3-3 09:56 | 只看该作者
黄youhui 发表于 2021-3-3 08:31
也可以这样
int a;
char b;

如果
unsigned int a;
unsigned char b;
unsigned char c;
c=a|b;
那a的高八位是按0补还是按1补位啊?
我知道与是低八位是按位与,高八位是补0。
回复

使用道具 举报

8#
ID:213173 发表于 2021-3-3 10:48 | 只看该作者
fengxiaoliang 发表于 2021-3-3 09:56
如果
unsigned int a;
unsigned char b;

你这求的是a|b的结果c,没有移位哪来补0补1之说,a、b的值根本就没有变。
回复

使用道具 举报

9#
ID:592807 发表于 2021-3-3 13:17 | 只看该作者
fengxiaoliang 发表于 2021-3-3 09:56
如果
unsigned int a;
unsigned char b;

补0,因为b会被强制转换成16位,0x01变成0x0001
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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