『壹』 西門子PLC中,取反指令NOT是什麼意思最近在研究PLC。
取反,是Java使用補碼來表示二進制數,在補碼表示中,最高位為符號位,正數的符號位為0,負數為1。
NOT,是匯編指令里邏輯運算符號:NOT表示取反的意思。
補碼的規定如下:
對正數來說,最高位為0,其餘各位代表數值本身(以二進製表示),如+42的補碼為00101010。
對負數而言,把該數絕對值的補碼按位取反,然後對整個數加1,即得該數的補碼。
如-42的補碼為11010110(00101010按位取反11010101+1即11010110)。
用補碼來表示數,0的補碼是單一的,都為00000000。(而在原碼,反碼表示中,+0和-0的表示是不單一的,可參見相應的書籍)。
而且可以用111111表示-1的補(這也是補碼與原碼和反碼的區別)。
(1)西門子編程中如何取反擴展閱讀:
運算方法:
1、正數取反:
先將初始數值轉換成二進制數,再對二進制數的每一位(包括第一位的符號位)進行運算:
即將0變為1、將1變為0。得到的是最終結果的補碼,要轉換為最終結果的原碼則需再次取補碼,就能得到計算結果。
2、負數取反:
先將初始數值轉換成二進制數,再取得二進制數的補碼,之後對補碼的每一位(包括第一位的符號位)進行運算:即將0變為1、將1變為0。
得到的是最終結果的補碼(到達這一步後所得的二進制數為正數,由於正數的原碼、反碼、補碼相同,後面的運算可以忽略。
視此步得到的為最終結果的二進制數),要轉換為最終結果的原碼則需再次取補碼,就能得到計算結果。
常見相關指令:
AND 與運算
or 或運算
XOR 異或運算
NOT 取反
TEST 測試(兩操作數作與運算,僅修改標志位,不回送結果)
SHL 邏輯左移
SAL 算術左移(=SHL)
SHR 邏輯右移( 每位右移, 低位進 CF, 高位補 0)
SAR 算術右移(每位右移, 低位進 CF, 高位不變)
ROL 循環左移
ROR 循環右移
RCL 通過進位的循環左移
RCR 通過進位的循環右移