全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1384
推到 Plurk!
推到 Facebook!

C語言的程式碼

答題得分者是:rick060
dootf
一般會員


發表:3
回覆:10
積分:7
註冊:2011-10-02

發送簡訊給我
#1 引用回覆 回覆 發表時間:2011-10-11 15:30:22 IP:123.193.xxx.xxx 訂閱

P1 = 0x01;
P1 <<= 1;

所以現在 P1 = 0x02;

P1 = 0x01;
P1 = (1<如上面這行,該怎麼解釋。現在 P1 = 什麼

網路上看到的寫法,實在看不懂,請高手們幫幫忙了。謝謝




rick060
高階會員


發表:2
回覆:112
積分:217
註冊:2009-11-17

發送簡訊給我
#2 引用回覆 回覆 發表時間:2011-10-11 16:05:45 IP:60.250.xxx.xxx 未訂閱
a += 3 等於 a = a + 3
b -= 10 等於 b = b - 10
反之亦然


P << =1 就等於 P = P <<1

還是你對為何 << 後 P 會等於 2 不懂?
請找關鍵字 bitwise (位元運算子)

例:以 little endian 為例,註解後為2進制值
char A;
A = 1; // 00000001
A <<=1; // 00000010
A <<=2; // 00001000
A >>=3;// 00000001
dootf
一般會員


發表:3
回覆:10
積分:7
註冊:2011-10-02

發送簡訊給我
#3 引用回覆 回覆 發表時間:2011-10-12 13:07:39 IP:123.193.xxx.xxx 訂閱
rick060 大大:

如你所說的,我都了解。若照你的意思,

P1 = 0x01;
P1 <<= 1 = (1<
如此是嗎。

我不了解的是 (1<
當 P1 = P1 << 1; // 表示 P1 向左移動一個位元後再給 P1

可是 P1 = (1 << P1); // 括號中 P1 在 1 的右邊,這樣怎樣移動,且 1 為常數,也不能移動。

如若, P1 <<= 1 =(1 << P1);

P1=0x03;
P1=(1<
此時 P1 應該等於什麼,請幫忙解答。
rick060
高階會員


發表:2
回覆:112
積分:217
註冊:2009-11-17

發送簡訊給我
#4 引用回覆 回覆 發表時間:2011-10-12 13:55:27 IP:60.250.xxx.xxx 未訂閱
  char A = 3;


A <<= 1; // 等於 A = A << 1; 絕對不會是 A = 1<< A;

A = 1 << A;

我比較好奇是為何您覺得 1 不能移動?

char A = 3;
asm {
mov cl , A
mov dl , 1
shl dl , cl
mov A , dl
}; //A 為8

A = 3;
asm {
mov cl , 1
mov dl , A
shl dl , cl
mov A , dl
}; //A為6
dootf
一般會員


發表:3
回覆:10
積分:7
註冊:2011-10-02

發送簡訊給我
#5 引用回覆 回覆 發表時間:2011-10-12 14:32:08 IP:123.193.xxx.xxx 訂閱
經過前面幾行的解釋,大概了解你的意思,只是不知對不對。

如題:

char A=3;
A <<=1; //所以此刻 A=0x06

A = 1<

另外,可以麻煩前輩把上面的 asm 碼,稍加註解一下,我只能讀得懂C碼。謝謝
極光
初階會員


發表:32
回覆:96
積分:40
註冊:2005-01-16

發送簡訊給我
#6 引用回覆 回覆 發表時間:2011-10-12 22:39:34 IP:59.105.xxx.xxx 訂閱
mov cl , A                     工作暫存器 >> cl
mov dl , 1 dl = 1
shl dl , cl dl 左移 "cl"個 bit
mov A , dl dl >> 工作暫存器

小弟我因該沒有翻譯錯吧!但組語會隨著cpu不同而有些許改變。
dootf
一般會員


發表:3
回覆:10
積分:7
註冊:2011-10-02

發送簡訊給我
#7 引用回覆 回覆 發表時間:2011-10-13 09:54:21 IP:123.193.xxx.xxx 訂閱
謝謝各位大家的幫忙,終於了解了,原來常數也可以移動,asm 也稍微看的懂了。
系統時間:2024-03-29 0:30:46
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!