找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 2663|回復: 8
收起左側(cè)

請教一下大家16位與8位怎么位或?謝謝

[復制鏈接]
ID:887685 發(fā)表于 2021-3-2 15:24 | 顯示全部樓層 |閱讀模式
如題
回復

使用道具 舉報

ID:213173 發(fā)表于 2021-3-2 20:41 | 顯示全部樓層
        unsigned int  a;
        unsigned char b;
        a|=b;    //低8位按位或
        a|=b<<8; //高8位按位或
回復

使用道具 舉報

ID:592807 發(fā)表于 2021-3-3 08:31 | 顯示全部樓層
wulin 發(fā)表于 2021-3-2 20:41
unsigned int  a;
        unsigned char b;
        a|=b;    //低8位按位或

也可以這樣
int a;
char b;
int c;
a=(int)b|a;//強制轉(zhuǎn)換類型

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

我一般不記邏輯符號的優(yōu)先級,直接加括號省時省力。
回復

使用道具 舉報

ID:879348 發(fā)表于 2021-3-3 08:45 | 顯示全部樓層
直接操作,編譯器會處理
回復

使用道具 舉報

ID:549582 發(fā)表于 2021-3-3 09:09 | 顯示全部樓層
假如定義8位為a,16位為b.b=b<<8|a;這樣就可以了
回復

使用道具 舉報

ID:887685 發(fā)表于 2021-3-3 09:56 | 顯示全部樓層
wulin 發(fā)表于 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。
回復

使用道具 舉報

ID:887685 發(fā)表于 2021-3-3 09:56 | 顯示全部樓層
黃youhui 發(fā)表于 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。
回復

使用道具 舉報

ID:213173 發(fā)表于 2021-3-3 10:48 | 顯示全部樓層
fengxiaoliang 發(fā)表于 2021-3-3 09:56
如果
unsigned int a;
unsigned char b;

你這求的是a|b的結(jié)果c,沒有移位哪來補0補1之說,a、b的值根本就沒有變。
回復

使用道具 舉報

ID:592807 發(fā)表于 2021-3-3 13:17 | 顯示全部樓層
fengxiaoliang 發(fā)表于 2021-3-3 09:56
如果
unsigned int a;
unsigned char b;

補0,因為b會被強制轉(zhuǎn)換成16位,0x01變成0x0001
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表