欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

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

QQ登錄

只需一步,快速開始

搜索
查看: 6088|回復(fù): 55
打印 上一主題 下一主題
收起左側(cè)

表現(xiàn)奇怪的C語(yǔ)言0x80 正數(shù)?負(fù)數(shù)?bug?

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:1043747 發(fā)表于 2022-9-12 08:46 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
0x80在例子1表達(dá)式中為正數(shù),在例子2表達(dá)式中為負(fù)數(shù)。
我不禁疑惑,0x80在表達(dá)式中什么時(shí)候被解釋為正數(shù),何時(shí)是負(fù)數(shù)?

測(cè)試設(shè)備信息
開發(fā)板:普中A2
單片機(jī):stc89c52rc
晶振:11.0592MHz
IDE:keil 5

單片機(jī)源程序如下:
  1. #include <STC89C5xRC.H>

  2. sbit led1 = P2^1;
  3. sbit led2 = P2^2;

  4. void main(void) {
  5.         
  6.         signed char a;
  7.         signed char byte, i, t;
  8.         // example 1
  9.         a = 0x80;
  10.         if (a != 0x80) led1 = 0; // led亮,說(shuō)明if判斷中字面量0x80是正數(shù)
  11.         // example 2
  12.         byte = 0xa0;
  13.         i = 4;
  14.         t = byte & 0x80>>i;
  15.         if (t < 0) led2 = 0; // led亮,說(shuō)明上一句中0x80被解釋為負(fù)數(shù)
  16.         while (1);
  17. }
復(fù)制代碼



表現(xiàn)奇怪的0x80.zip (17.09 KB, 下載次數(shù): 19)
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:94031 發(fā)表于 2022-9-12 10:07 | 只看該作者
signed char 的范圍:-128-127 對(duì)于有符號(hào)數(shù):最高位代表符號(hào)位: 0代表正數(shù) 1代表負(fù)數(shù) 。
回復(fù)

使用道具 舉報(bào)

板凳
ID:213173 發(fā)表于 2022-9-12 11:14 | 只看該作者
signed char 聲明有符號(hào)型變量就得按C語(yǔ)言規(guī)定使用,數(shù)據(jù)范圍-128~+127。不是隨使用者意想而改變。覺(jué)得反復(fù)橫跳的是自己理解的問(wèn)題?
回復(fù)

使用道具 舉報(bào)

地板
ID:624769 發(fā)表于 2022-9-12 11:49 來(lái)自觸屏版 | 只看該作者
正負(fù)數(shù),是人為劃定的一個(gè)范圍,你要判斷正負(fù),也是應(yīng)該用if(a<0)來(lái)判斷,0x80在作為一個(gè)常量的時(shí)候,永遠(yuǎn)是0x80,沒(méi)有正負(fù)數(shù)只說(shuō)。之所以0x80賦值給signed char 聲明的變量后,變-128,是C語(yǔ)言,這么“認(rèn)知”的。某種意義上其實(shí)就是“溢出”。
回復(fù)

使用道具 舉報(bào)

5#
ID:1043747 發(fā)表于 2022-9-12 12:16 來(lái)自觸屏版 | 只看該作者
xuyaqi 發(fā)表于 2022-9-12 10:07
signed char 的范圍:-128-127 對(duì)于有符號(hào)數(shù):最高位代表符號(hào)位: 0代表正數(shù) 1代表負(fù)數(shù) 。

我知道,但我說(shuō)的是字面量0x80
回復(fù)

使用道具 舉報(bào)

6#
ID:123289 發(fā)表于 2022-9-12 14:19 | 只看該作者
本帖最后由 yzwzfyz 于 2022-9-13 08:34 編輯

完全看人為的定義!
必須事先規(guī)定!!
這樣才能沒(méi)有爭(zhēng)議。
回復(fù)

使用道具 舉報(bào)

7#
ID:1043747 發(fā)表于 2022-9-12 21:35 來(lái)自觸屏版 | 只看該作者
188610329 發(fā)表于 2022-9-12 11:49
正負(fù)數(shù),是人為劃定的一個(gè)范圍,你要判斷正負(fù),也是應(yīng)該用if(a

你說(shuō)的對(duì),0x80就是128,永遠(yuǎn)是正數(shù)。
在例子2中,字面量0x80被解釋為負(fù)數(shù),我認(rèn)為是keil bug,你覺(jué)得呢?
回復(fù)

使用道具 舉報(bào)

8#
無(wú)效樓層,該帖已經(jīng)被刪除
9#
ID:550613 發(fā)表于 2022-9-13 10:33 | 只看該作者
你是從哪里得出0x80被解釋為負(fù)數(shù)的結(jié)論。
注釋的意思和你理解的意思真的一樣嗎?
這個(gè)注釋就一定是對(duì)的嗎?
回復(fù)

使用道具 舉報(bào)

10#
ID:1043747 發(fā)表于 2022-9-13 12:03 來(lái)自觸屏版 | 只看該作者
vca 發(fā)表于 2022-9-13 10:33
你是從哪里得出0x80被解釋為負(fù)數(shù)的結(jié)論。
注釋的意思和你理解的意思真的一樣嗎?
這個(gè)注釋就一定是對(duì)的嗎 ...

如果我哪里不對(duì),你可以提出來(lái)啊,不要一味指責(zé)
回復(fù)

使用道具 舉報(bào)

11#
ID:94031 發(fā)表于 2022-9-13 14:28 | 只看該作者
censv 發(fā)表于 2022-9-12 12:16
我知道,但我說(shuō)的是字面量0x80

字面量0x80 作為 signed char 應(yīng)該是 -128
回復(fù)

使用道具 舉報(bào)

12#
ID:624769 發(fā)表于 2022-9-13 17:51 | 只看該作者
censv 發(fā)表于 2022-9-12 21:35
你說(shuō)的對(duì),0x80就是128,永遠(yuǎn)是正數(shù)。
在例子2中,字面量0x80被解釋為負(fù)數(shù),我認(rèn)為是keil bug,你覺(jué)得呢 ...

t = byte & 0x80>>i;
從 這句, 以及你的結(jié)論看, 你完全沒(méi)有理解  變量和常量的關(guān)系, 以及 有符號(hào)數(shù)的運(yùn)算規(guī)則。
你嘗試 把 上面這句, 分步寫出來(lái)。 然后嘗試,每一步 寫出注釋,說(shuō)明這一步的目的,以及你認(rèn)為得到的結(jié)果。看看,和你后面的 if 是不是能 銜接起來(lái)?

回復(fù)

使用道具 舉報(bào)

13#
ID:1043747 發(fā)表于 2022-9-13 18:55 來(lái)自觸屏版 | 只看該作者
188610329 發(fā)表于 2022-9-13 17:51
t = byte & 0x80>>i;
從 這句, 以及你的結(jié)論看, 你完全沒(méi)有理解  變量和常量的關(guān)系, 以及 有符號(hào)數(shù)的 ...

那我們?cè)俸?jiǎn)化一下,
當(dāng)shift和result變量聲明為8位有符號(hào)類型
shift = 4;
result = 0x80 >> shift;
現(xiàn)在result是0xF8,如果字面量0x80被當(dāng)做正數(shù),左移4位后的結(jié)果是0x08。
結(jié)論:字面量0x80一定被當(dāng)做了負(fù)數(shù)
回復(fù)

使用道具 舉報(bào)

14#
ID:213173 發(fā)表于 2022-9-13 20:54 | 只看該作者
censv 發(fā)表于 2022-9-12 21:35
你說(shuō)的對(duì),0x80就是128,永遠(yuǎn)是正數(shù)。
在例子2中,字面量0x80被解釋為負(fù)數(shù),我認(rèn)為是keil bug,你覺(jué)得呢 ...

    signed char a;
    a = 0x80;
    if (a != 0x80) led1 = 0;//這里if只判斷真假,哪來(lái)的正負(fù)判斷?自己理解錯(cuò)誤,不要懷疑keil bug,在keil里走單步看輸出窗口就一目了然了。
回復(fù)

使用道具 舉報(bào)

15#
ID:1043747 發(fā)表于 2022-9-14 06:15 來(lái)自觸屏版 | 只看該作者
wulin 發(fā)表于 2022-9-13 20:54
signed char a;
    a = 0x80;
    if (a != 0x80) led1 = 0;//這里if只判斷真假,哪來(lái)的正負(fù)判斷 ...

if當(dāng)然是判斷真假,a != x80,因?yàn)閍表示為負(fù)數(shù),不等于正數(shù)的字面量0x80,是對(duì)的。
但在第二個(gè)例子,0x80的左移,最高位補(bǔ)的是1啊,這就不正常了
回復(fù)

使用道具 舉報(bào)

16#
ID:1043747 發(fā)表于 2022-9-14 06:18 來(lái)自觸屏版 | 只看該作者
xuyaqi 發(fā)表于 2022-9-13 14:28
字面量0x80 作為 signed char 應(yīng)該是 -128

0x80字面量應(yīng)該是128,-0x80才是-128
回復(fù)

使用道具 舉報(bào)

17#
ID:550613 發(fā)表于 2022-9-14 10:57 | 只看該作者
censv 發(fā)表于 2022-9-13 12:03
如果我哪里不對(duì),你可以提出來(lái)啊,不要一味指責(zé)

我沒(méi)有指責(zé)你的意思,我的意思是你要思考一下,你理解的意思和注釋的意思是不是一樣的,如果是一樣的,你是通過(guò)什么方法驗(yàn)證的,是通過(guò)調(diào)試或者是其他方法驗(yàn)證,最終得出這個(gè)結(jié)論的
回復(fù)

使用道具 舉報(bào)

18#
ID:624769 發(fā)表于 2022-9-14 11:05 | 只看該作者
censv 發(fā)表于 2022-9-13 18:55
那我們?cè)俸?jiǎn)化一下,
當(dāng)shift和result變量聲明為8位有符號(hào)類型
shift = 4;

所以,我說(shuō)你沒(méi)明白,什么叫 常量, 什么叫變量.   所以我讓你分步寫, 有助你理解.
result = 0x80 >> shift;  你為什么不分步寫?如果分步寫了,根本就沒(méi)有這樣的疑惑!
0x80 是 常量, 它能移位么??   不能! 所以, 你分步寫只能這樣寫:
result = 0x80;
result >>= shift;
看出來(lái)了么??  你的 result 是 有符號(hào)char  -128~127,  所以 0x80 賦值后,是-128, 明白了么??

提個(gè)小建議,你不如先 學(xué) 1禮拜 的匯編, 也不要深入, 了解一下 51的 運(yùn)轉(zhuǎn)原理,以及常量變量的 應(yīng)用關(guān)系,再回頭看這問(wèn)題,就會(huì)發(fā)現(xiàn)根本不是問(wèn)題。
回復(fù)

使用道具 舉報(bào)

19#
ID:1043747 發(fā)表于 2022-9-14 12:40 來(lái)自觸屏版 | 只看該作者
本帖最后由 censv 于 2022-9-16 10:22 編輯
188610329 發(fā)表于 2022-9-14 11:05
所以,我說(shuō)你沒(méi)明白,什么叫 常量, 什么叫變量.   所以我讓你分步寫, 有助你理解.
result = 0x80 >> shif ...
0x80是常量不假,但也是整數(shù)。
而且關(guān)于移位運(yùn)算符兩個(gè)要求操作數(shù)都必須為整數(shù),并且遵循整形提升原則,結(jié)果的類型是提升后的左操作數(shù)的類型。
所以對(duì)0x80的移位沒(méi)有任何問(wèn)題。有問(wèn)題的我仍然認(rèn)為是keil的編譯沒(méi)有遵循c語(yǔ)言標(biāo)準(zhǔn)(沒(méi)有進(jìn)行整形提升)

我還有些intel 8086的匯編知識(shí),你能告訴我怎么查看keil編譯后的匯編代碼嗎
回復(fù)

使用道具 舉報(bào)

20#
ID:1043747 發(fā)表于 2022-9-14 12:50 來(lái)自觸屏版 | 只看該作者
188610329 發(fā)表于 2022-9-14 11:05
所以,我說(shuō)你沒(méi)明白,什么叫 常量, 什么叫變量.   所以我讓你分步寫, 有助你理解.
result = 0x80 >> shif ...

不是不分步,是我不懂你的分布是什么意思?
我以為你是嫌代碼多懶得看,我只好把代碼再精簡(jiǎn)一下
回復(fù)

使用道具 舉報(bào)

21#
ID:624769 發(fā)表于 2022-9-14 13:20 | 只看該作者
censv 發(fā)表于 2022-9-14 12:40
關(guān)鍵點(diǎn)來(lái)了,0x80是常量不假,但也是整數(shù)。
而且關(guān)于移位運(yùn)算符兩個(gè)要求操作數(shù)都必須為整數(shù),并且遵循整 ...

察看編譯后的 匯編代碼是  Ctrl + F5

我還是那句話, 常量是不能 做移位的,必須有個(gè)載體。
讓你做分步的目的,就是讓你 意識(shí)到這個(gè) “載體”
你要分步的話, 肯定 不能  0x80 >>= result;  吧? 編譯絕對(duì)通不過(guò)。
由于你自己沒(méi)有分步, 所以,編譯器只好 幫你來(lái)分步。那么,怎么分?
你的受體目標(biāo)是 result  編譯器 只好按 result 類型作為標(biāo)裝, 來(lái)做0x80 的位移,理解了么?
如果,你正而8經(jīng)的 分步寫:
ACC = 0x80;   
ACC >>= 4;
result = ACC;
自然,就不是你那個(gè)結(jié)果了。明白了么?
回復(fù)

使用道具 舉報(bào)

22#
ID:526543 發(fā)表于 2022-9-14 13:28 | 只看該作者

signed char 聲明有符號(hào)型變量就得按C語(yǔ)言規(guī)定使用,數(shù)據(jù)范圍-128~+127
回復(fù)

使用道具 舉報(bào)

23#
ID:161164 發(fā)表于 2022-9-14 15:21 | 只看該作者
試試if (a != (char)0x80) led1 = 0;
回復(fù)

使用道具 舉報(bào)

24#
ID:879809 發(fā)表于 2022-9-14 15:35 | 只看該作者
censv 發(fā)表于 2022-9-14 12:50
不是不分步,是我不懂你的分布是什么意思?
我以為你是嫌代碼多懶得看,我只好把代碼再精簡(jiǎn)一下

你精簡(jiǎn)的結(jié)果已經(jīng)很明顯了,沒(méi)有人能看懂你在說(shuō)什么東西。

你要把每一步都仔細(xì)寫出來(lái),大家才能知道你哪里錯(cuò)了。
回復(fù)

使用道具 舉報(bào)

25#
ID:1043747 發(fā)表于 2022-9-14 19:28 | 只看該作者
發(fā)表于 2022-9-14 15:35
你精簡(jiǎn)的結(jié)果已經(jīng)很明顯了,沒(méi)有人能看懂你在說(shuō)什么東西。

你要把每一步都仔細(xì)寫出來(lái),大家才能知道你 ...

不知道你從哪認(rèn)為的我認(rèn)為自己絕對(duì)正確?

一上來(lái)就頤指氣使,你哪%出來(lái)的%!
你引用的那段也不是回復(fù)你的,和你有關(guān)嗎?
問(wèn)不問(wèn)的更不需要你指手畫腳

你既然看不懂,那說(shuō)明你%,那就不要回復(fù)就好了。
如果你認(rèn)為我態(tài)度不好,先看看你自己
回復(fù)

使用道具 舉報(bào)

26#
ID:1043747 發(fā)表于 2022-9-14 19:52 | 只看該作者
188610329 發(fā)表于 2022-9-14 13:20
察看編譯后的 匯編代碼是  Ctrl + F5

我還是那句話, 常量是不能 做移位的,必須有個(gè)載體。

非常感謝,通過(guò)看了反匯編我明白了。就是keil沒(méi)遵循c標(biāo)準(zhǔn)。

只是你說(shuō)常量不能移位,我不認(rèn)為是正確的,我上面中間回復(fù)的那句話是c語(yǔ)言標(biāo)準(zhǔn)上的。
移位運(yùn)算并不要求左值(類似你說(shuō)的「載體」),
0x80 >>= result; >>=不是移位運(yùn)算符,這是賦值運(yùn)算符,更準(zhǔn)確的說(shuō)是復(fù)合賦值運(yùn)算符,賦值運(yùn)算符要求左操作數(shù)是左值。0x80是常量是右值,不能作為左值使用。所以該語(yǔ)句非法。

result = 0x80 >> shift; 的執(zhí)行順序,應(yīng)該是0x80 >> shift 先運(yùn)算,而非先看result的類型。因?yàn)橐莆粌?yōu)先級(jí)高于賦值


回復(fù)

使用道具 舉報(bào)

27#
ID:624769 發(fā)表于 2022-9-14 20:18 | 只看該作者
censv 發(fā)表于 2022-9-14 19:52
非常感謝,通過(guò)看了反匯編我明白了。就是keil沒(méi)遵循c標(biāo)準(zhǔn)。

只是你說(shuō)常量不能移位,我不認(rèn)為是正確的 ...

唉……,好吧,你覺(jué)得常量可以移位,就可以移位吧。
0x80 >> shift;   是不能獨(dú)立成語(yǔ)句的。
0x80 >>= shift; 是非法的。

result >> shift;  也是不能獨(dú)立成語(yǔ)句的。
result >>= shift; 是合法的。

移位必須在  A 寄存器操作。
任何變量,做移位操作,都會(huì)把 類型 帶入。
你是 singed char 就會(huì) 有 MOV C,ACC.7
你是 unsigned char 就會(huì)有 CLR C
如果你是 int 或者 Long  則還會(huì)有  XCH A,R7 這些操作。 選擇哪個(gè)操作,都是根據(jù)變量類型來(lái)定的。
但是,常量是沒(méi)有 類型的。 當(dāng)然喜歡抬杠的會(huì)拿  22118400UL 這種來(lái)說(shuō)事,我就不一一解釋了,就泛泛來(lái)講,我說(shuō)的“載體” 就是 承載告知 編譯器 "類型" 的變量。
算了,你覺(jué)得怎么好理解就怎么理解吧,總之問(wèn)題不在 0x80,也不是KEIL 的bug, 而是,在你的寫法。決定了最后的結(jié)果。
回復(fù)

使用道具 舉報(bào)

28#
ID:1043747 發(fā)表于 2022-9-14 22:28 來(lái)自觸屏版 | 只看該作者
本帖最后由 censv 于 2022-9-15 07:38 編輯
188610329 發(fā)表于 2022-9-14 20:18
唉……,好吧,你覺(jué)得常量可以移位,就可以移位吧。
0x80 >> shift;   是不能獨(dú)立成語(yǔ)句的。
0x80 >>=  ...

常量當(dāng)然有類型,字面量常量0x80永遠(yuǎn)是正的128。

咱們撇過(guò)以上分歧不談,你認(rèn)為下一行語(yǔ)句執(zhí)行后result變量的結(jié)果是多少,result聲明為signed char

result = 0x80 >> 4;
回復(fù)

使用道具 舉報(bào)

29#
ID:1043747 發(fā)表于 2022-9-14 22:31 來(lái)自觸屏版 | 只看該作者
188610329 發(fā)表于 2022-9-14 20:18
唉……,好吧,你覺(jué)得常量可以移位,就可以移位吧。
0x80 >> shift;   是不能獨(dú)立成語(yǔ)句的。
0x80 >>=  ...

0x80 >> shift;   是不能獨(dú)立成語(yǔ)句的。
result >> shift;  也是不能獨(dú)立成語(yǔ)句的。

這兩條都是合法的,編譯不會(huì)報(bào)錯(cuò)
回復(fù)

使用道具 舉報(bào)

30#
ID:879809 發(fā)表于 2022-9-14 23:04 | 只看該作者
censv 發(fā)表于 2022-9-14 22:28
常量當(dāng)然有類型,字面量常量0x80永遠(yuǎn)是正的128。

咱們撇過(guò)以上分歧不談,你認(rèn)為下一行語(yǔ)句執(zhí)行后resul ...

c語(yǔ)言的魅力就在于貼近機(jī)器,0x80賦值給signed char后不是正數(shù)
回復(fù)

使用道具 舉報(bào)

31#
ID:1043747 發(fā)表于 2022-9-15 07:16 來(lái)自觸屏版 | 只看該作者
發(fā)表于 2022-9-14 23:04
c語(yǔ)言的魅力就在于貼近機(jī)器

0x80賦值給signed char并不影響原值,0x80也不會(huì)變成0x81
回復(fù)

使用道具 舉報(bào)

32#
ID:624769 發(fā)表于 2022-9-15 10:52 | 只看該作者
censv 發(fā)表于 2022-9-14 22:31
0x80 >> shift;   是不能獨(dú)立成語(yǔ)句的。
result >> shift;  也是不能獨(dú)立成語(yǔ)句的。

你確定, 這樣寫不會(huì)出 275 警告?
你 Ctril +F5 看過(guò)編譯結(jié)果么?
你知不知道, 這兩句, 壓根出不了 匯編代碼, 會(huì)被編譯器直接拋棄?

再回答上面你說(shuō)的問(wèn)題,
還是那句話, 常量是不能移位的, 所以:
result = 0x80 >> 4;   你看匯編代碼的話, 你只會(huì) 看到  MOV result,#08H  而完全看不到 移位的操作。明白了么?
C語(yǔ)言的優(yōu)點(diǎn),也是他的缺點(diǎn), 當(dāng)你不嚴(yán)謹(jǐn)?shù)臅r(shí)候, 他會(huì)自己腦補(bǔ)。


回復(fù)

使用道具 舉報(bào)

33#
ID:1043747 發(fā)表于 2022-9-15 16:57 來(lái)自觸屏版 | 只看該作者
188610329 發(fā)表于 2022-9-15 10:52
你確定, 這樣寫不會(huì)出 275 警告?
你 Ctril +F5 看過(guò)編譯結(jié)果么?
你知不知道, 這兩句, 壓根出不了 匯編 ...

它們只是沒(méi)有產(chǎn)生副作用,出275警告恰恰說(shuō)明它們是合法語(yǔ)句。至于不會(huì)產(chǎn)生實(shí)際機(jī)器碼,那是編譯器優(yōu)化掉了。

通過(guò)result =0x80 >> 4;的對(duì)比就可發(fā)現(xiàn),移位操作并不和result類型相關(guān)。根據(jù)你的分步而說(shuō),如相關(guān)result的結(jié)果只能是0xF8。至于看不到匯編代碼,那是因?yàn)?x80>>4是常量表達(dá)式,編譯時(shí)執(zhí)行。

我發(fā)現(xiàn)使用反匯編來(lái)反推C語(yǔ)言,有些倒果為因了。
看匯編能解決為什么代碼在該平臺(tái)是這樣執(zhí)行的,但解決不了編譯器為什么這樣翻譯,這還得回到C語(yǔ)言標(biāo)準(zhǔn)本身

有3點(diǎn)可以證明c語(yǔ)言常量移位是合法的
①編譯器不會(huì)報(bào)錯(cuò)②c語(yǔ)言標(biāo)準(zhǔn)對(duì)移位運(yùn)算符有明確描述,不存在類似a[ i]=i++;等關(guān)乎運(yùn)算順序的歧義③vc,gcc,clang等編譯器對(duì)于result=0x80>>shift的執(zhí)行結(jié)果都是0x08,而不是keil的0xF8。
回復(fù)

使用道具 舉報(bào)

34#
ID:824490 發(fā)表于 2022-9-24 16:10 | 只看該作者
一瓶農(nóng)夫山泉,在超市里買2塊錢,同樣一瓶水,同樣的容量,當(dāng)它在迪廳里,可是會(huì)被賣到20塊錢。
場(chǎng)景地點(diǎn)很關(guān)鍵!
所以,同樣的0x80,當(dāng)它賦值給不同類型的變量時(shí)(signed char/unsigned char),其代表的含義什是不同的。
變量的類型一旦定義下來(lái),在運(yùn)行時(shí)是不會(huì)被改變的。
且繞開變量的類型去談它的正負(fù)值是沒(méi)有意義的。
回復(fù)

使用道具 舉報(bào)

35#
ID:384109 發(fā)表于 2022-9-24 21:12 | 只看該作者
怎么覺(jué)得討論的有點(diǎn)偏了,0x80的十進(jìn)制是什么數(shù),首先要定義0x80的數(shù)據(jù)類型,在編程里,十六進(jìn)制數(shù)和二進(jìn)制數(shù)不事先定義數(shù)據(jù)類型,數(shù)值就沒(méi)有意義,定義位有符號(hào)數(shù),0x80-0xff就都是負(fù)數(shù),定義為無(wú)符號(hào)數(shù)0x80-0xff就都是正數(shù),至于0x80>>4,只是代表以0x80為具體數(shù)值進(jìn)行移位操作,所以是可以實(shí)現(xiàn)也是正確的,但是移位結(jié)果同樣要看數(shù)據(jù)類型,無(wú)符號(hào)數(shù)移位是補(bǔ)零,有符號(hào)數(shù)移位是補(bǔ)1,不能因?yàn)橐莆欢淖兞藬?shù)據(jù)的類型
回復(fù)

使用道具 舉報(bào)

36#
ID:137736 發(fā)表于 2022-9-24 21:29 | 只看該作者
看你定義,是有符合還是無(wú)符號(hào)。 signed char 與un signed char
回復(fù)

使用道具 舉報(bào)

37#
ID:1043747 發(fā)表于 2022-9-26 15:50 來(lái)自觸屏版 | 只看該作者
名字不是重點(diǎn) 發(fā)表于 2022-9-24 16:10
一瓶農(nóng)夫山泉,在超市里買2塊錢,同樣一瓶水,同樣的容量,當(dāng)它在迪廳里,可是會(huì)被賣到20塊錢。
場(chǎng)景地點(diǎn) ...

你的意思是常量沒(méi)有類型,且談?wù)撍念愋蜎](méi)有意義。對(duì)嗎?
回復(fù)

使用道具 舉報(bào)

38#
ID:1043747 發(fā)表于 2022-9-26 15:52 來(lái)自觸屏版 | 只看該作者
人中狼 發(fā)表于 2022-9-24 21:12
怎么覺(jué)得討論的有點(diǎn)偏了,0x80的十進(jìn)制是什么數(shù),首先要定義0x80的數(shù)據(jù)類型,在編程里,十六進(jìn)制數(shù)和二進(jìn)制 ...

那你認(rèn)為0x80是什么類型?
回復(fù)

使用道具 舉報(bào)

39#
ID:1043747 發(fā)表于 2022-9-26 15:54 來(lái)自觸屏版 | 只看該作者
zmc419 發(fā)表于 2022-9-24 21:29
看你定義,是有符合還是無(wú)符號(hào)。 signed char 與un signed char

說(shuō)的是常量0x80,不是變量,你可能沒(méi)認(rèn)真讀
回復(fù)

使用道具 舉報(bào)

40#
ID:384109 發(fā)表于 2022-9-26 16:08 | 只看該作者
censv 發(fā)表于 2022-9-26 15:52
那你認(rèn)為0x80是什么類型?

你這個(gè)問(wèn)法就真的偏了,要先定義類型,再討論具體含義,而不是隨意討論,那樣沒(méi)結(jié)果的,這是很直接的因果關(guān)系,先因后果
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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