西門子編程32位地址指針轉(zhuǎn)換左移3位
西門子編程32位地址指針轉(zhuǎn)換為什么要移3位,移多少位不是隨意規(guī)定的,那么這個(gè)是怎么來(lái)的呢?先來(lái)看看指針數(shù)據(jù)類型的存儲(chǔ)格式是怎么樣的,這里就直接說32位的存儲(chǔ)器尋址吧。
32位的指針當(dāng)然是32位的,它的每一位都有特殊的含義。這個(gè)必須先要了解。
0000000000000BBBBBBBBBBBBBBBBXXX
0-2位(X)表示位地址。
3-18位(B)表示字節(jié)地址。
19-31位(0)沒有定義。
XXX表示從000-111正好可以代表.0-.7,所以稱它為位地址
而BBB表示的范圍是0-65536這個(gè)范圍,正好可以覆蓋IQMLDB的表示范圍,所以稱它為字節(jié)地址。
比如我們讀取MW20這個(gè)存儲(chǔ)器的數(shù)據(jù),那么我們可以使用下面的指令
LMW20
用尋址的方式來(lái)表示的話就是
LMW[MD2]其中MD2是一個(gè)變量,我們希望當(dāng)MD2的數(shù)值等于20的時(shí)候就可以訪問到MW20了。這個(gè)時(shí)候我們要清醒地看到MD2是一個(gè)32位長(zhǎng)度變量,加上中括號(hào)[]后,它就代表了一個(gè)32位的指針了,這個(gè)時(shí)候,如果MD2=20的話,它表示的就不是20,而是10100,按照32位指針的數(shù)據(jù)定義,它的位地址是100字節(jié)地址是10,
那么它代表的是2.4這樣的話LMW[MD2]就變成了LMW2.4顯然這樣的結(jié)果是錯(cuò)誤的,只有對(duì)于位尋址我們才可以使用2.4這樣的格式例如AM2.4
對(duì)于字節(jié),字,雙字都不能這樣寫。那怎么辦,按規(guī)矩辦,根據(jù)32位的指針格式,我們希望它的字節(jié)地址為20,那么將最低的3位左移,
LL#20//L#20表示整數(shù)20
SLD3
TMD2
這樣的話MD2的數(shù)據(jù)就變成10100000,
表示20.0當(dāng)對(duì)字節(jié),字,雙字進(jìn)行尋址的時(shí)候,位地址必須為0。這一條原則結(jié)合32位指針的數(shù)據(jù)結(jié)構(gòu)就可以解釋為什么要左移3位,或者乘以8(左移3位相當(dāng)于乘以8)。什么時(shí)候移的答案也就在這其中了。
本文標(biāo)簽:西門子編程32位地址指針轉(zhuǎn)換左移3位
* 由于無(wú)法獲得聯(lián)系方式等原因,本網(wǎng)使用的文字及圖片的作品報(bào)酬未能及時(shí)支付,在此深表歉意,請(qǐng)《西門子編程32位地址指針轉(zhuǎn)換左移3位》相關(guān)權(quán)利人與機(jī)電之家網(wǎng)取得聯(lián)系。
關(guān)于“西門子編程32位地址指針轉(zhuǎn)換左移3位”的更多資訊
個(gè)人求購(gòu)










