找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2015|回復(fù): 16
收起左側(cè)

C語(yǔ)言8位的數(shù)據(jù)賦值給一個(gè)只有一位的變量時(shí)單片機(jī)是怎么處理的

[復(fù)制鏈接]
ID:45973 發(fā)表于 2024-6-20 10:17 | 顯示全部樓層 |閱讀模式
請(qǐng)教一個(gè)問(wèn)題:sbit  SDA=P2^1; ..................
unsigned char byte=0xA0 ;..................

SDA=byte &(0x80 >2);
..................
請(qǐng)問(wèn)這時(shí)SDA的值是多少?像這種8位數(shù)據(jù)賦值給一個(gè)只有一位的變量時(shí),單片機(jī)是怎么處理的?謝謝!
回復(fù)

使用道具 舉報(bào)

ID:277550 發(fā)表于 2024-6-20 12:48 | 顯示全部樓層
結(jié)果中,第1位是什么。
回復(fù)

使用道具 舉報(bào)

ID:16848 發(fā)表于 2024-6-21 08:07 | 顯示全部樓層
在程序中試一下就知道了。
回復(fù)

使用道具 舉報(bào)

ID:619259 發(fā)表于 2024-6-21 09:26 | 顯示全部樓層
程序中SDA=byte &(0x80 >2)   應(yīng)該是SDA=byte &(0x80 >>2)吧?
回復(fù)

使用道具 舉報(bào)

ID:161164 發(fā)表于 2024-6-21 09:47 | 顯示全部樓層
假設(shè)你沒(méi)打錯(cuò)
SDA=byte &(0x80 >2);
SDA=0xA0 &(1);
SDA=0;

假設(shè)你打錯(cuò)了
正確的是
SDA=byte &(0x80 >>2);
SDA=0xA0 & 0x20;
SDA=0x20;
SDA=1;
回復(fù)

使用道具 舉報(bào)

ID:45973 發(fā)表于 2024-6-21 11:08 | 顯示全部樓層
cy009 發(fā)表于 2024-6-21 09:26
程序中SDA=byte &(0x80 >2)   應(yīng)該是SDA=byte &(0x80 >>2)吧?

是的,我打錯(cuò)了;
回復(fù)

使用道具 舉報(bào)

ID:45973 發(fā)表于 2024-6-21 11:15 | 顯示全部樓層
lkc8210 發(fā)表于 2024-6-21 09:47
假設(shè)你沒(méi)打錯(cuò)
SDA=byte &(0x80 >2);
SDA=0xA0 &(1);

對(duì)的,我打錯(cuò)了,是第二個(gè);但是我有個(gè)疑問(wèn),1010 0000和0010 0000 與運(yùn)算后的值是 0010 0000,這個(gè)8位的二進(jìn)制數(shù)賦值給一個(gè)一位的二進(jìn)制數(shù)(SDA)時(shí),為什么是1?如果這個(gè)8位的二進(jìn)制數(shù)是 0101 0000,那SDA此時(shí)的值是多少?謝謝!
回復(fù)

使用道具 舉報(bào)

ID:161164 發(fā)表于 2024-6-21 13:13 | 顯示全部樓層
franklee 發(fā)表于 2024-6-21 11:15
對(duì)的,我打錯(cuò)了,是第二個(gè);但是我有個(gè)疑問(wèn),1010 0000和0010 0000 與運(yùn)算后的值是 0010 0000,這個(gè)8位的 ...

非零即1
回復(fù)

使用道具 舉報(bào)

ID:774081 發(fā)表于 2024-6-21 14:09 | 顯示全部樓層
只要賦給給sda的不是0,sda就是1?
回復(fù)

使用道具 舉報(bào)

ID:45973 發(fā)表于 2024-6-21 15:15 | 顯示全部樓層

是的,非零即1,但是是由8位數(shù)據(jù)中的哪位來(lái)決定的?
回復(fù)

使用道具 舉報(bào)

ID:45973 發(fā)表于 2024-6-21 15:17 | 顯示全部樓層
shennognshi 發(fā)表于 2024-6-21 14:09
只要賦給給sda的不是0,sda就是1?

是的,不是1就是0,但是1或者0是由什么因素決定的?8位數(shù)據(jù)中的最高位或者是最低位還是其他的因素?
回復(fù)

使用道具 舉報(bào)

ID:619259 發(fā)表于 2024-6-21 18:44 | 顯示全部樓層
franklee 發(fā)表于 2024-6-21 15:15
是的,非零即1,但是是由8位數(shù)據(jù)中的哪位來(lái)決定的?

按位與,只有兩個(gè)結(jié)果,零(0x00)和非零,非零結(jié)果都是1
回復(fù)

使用道具 舉報(bào)

ID:624769 發(fā)表于 2024-6-22 20:26 | 顯示全部樓層
當(dāng)把一個(gè) BYTE  賦值給 BIT的時(shí)候,其實(shí)是做了一個(gè) 判斷 操作。
相當(dāng)于,
if(byte != 0x00)  SDA =1;
else   SDA = 0;
回復(fù)

使用道具 舉報(bào)

ID:1109793 發(fā)表于 2024-6-23 07:35 | 顯示全部樓層
franklee 發(fā)表于 2024-6-21 15:17
是的,不是1就是0,但是1或者0是由什么因素決定的?8位數(shù)據(jù)中的最高位或者是最低位還是其他的因素?

非0 就是只要不是0,都算1了,哪一位都是,不管哪一位為1都使該unsigned char非0
回復(fù)

使用道具 舉報(bào)

ID:401564 發(fā)表于 2024-6-24 09:23 | 顯示全部樓層
franklee 發(fā)表于 2024-6-21 15:17
是的,不是1就是0,但是1或者0是由什么因素決定的?8位數(shù)據(jù)中的最高位或者是最低位還是其他的因素?

在SDA=byte &(0x80 >2);中
byte &(0x80 >2) 的結(jié)果是一個(gè)邏輯值:真或者假,也就是1或者0,邏輯值就是一個(gè)位,而不是一個(gè)數(shù)字的1或者是0
回復(fù)

使用道具 舉報(bào)

ID:45973 發(fā)表于 2024-6-29 16:45 | 顯示全部樓層
謝謝各位的回復(fù),有點(diǎn)明白了,再次感謝!
回復(fù)

使用道具 舉報(bào)

ID:466250 發(fā)表于 2024-6-29 17:40 | 顯示全部樓層
不規(guī)范的寫(xiě)法。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表