位操作符的基底類型
位操作符同樣有一元和二元類型
檔案:OperatorBitwiseBase.js
function OperatorBinaryBitwiseBase() {<br /> this.DeriveFrom(new OperatorBinaryBase());<br /> this.set_ClassName("OperatorBitwiseBase");<br />};</p><p>function OperatorUnaryBitwiseBase() {<br /> this.DeriveFrom(new OperatorUnaryBase());<br /> this.set_ClassName("OperatorUnaryBitwiseBase");<br />};<br />
位操作符實現
檔案:OperatorBitwise.js
function OperatorBitwiseAnd() {<br /> this.DeriveFrom(new OperatorBinaryBitwiseBase());<br /> this.set_ClassName("OperatorBitwiseAnd");<br /> this.set_Sign("&");<br />};</p><p>OperatorBitwiseAnd.prototype.Evaluate = function(operands) {<br /> var values = this._getTwoNumberOperands(operands);</p><p> return new OperandNumber(values[0].get_Value() & values[1].get_Value());<br />};</p><p>function OperatorBitwiseOr() {<br /> this.DeriveFrom(new OperatorBinaryBitwiseBase());<br /> this.set_ClassName("OperatorBitwiseOr");<br /> this.set_Sign("|");<br />};</p><p>OperatorBitwiseOr.prototype.Evaluate = function(operands) {<br /> var values = this._getTwoNumberOperands(operands);</p><p> return new OperandNumber(values[0].get_Value() | values[1].get_Value());<br />};</p><p>function OperatorBitwiseXor() {<br /> this.DeriveFrom(new OperatorBinaryBitwiseBase());<br /> this.set_ClassName("OperatorBitwiseXor");<br /> this.set_Sign("^");<br />};</p><p>OperatorBitwiseXor.prototype.Evaluate = function(operands) {<br /> var value = this._getTwoNumberOperands(operands);</p><p> return new OperandNumber(values[0].get_Value() ^ values[1].get_Value());<br />};</p><p>function OperatorBitwiseNot() {<br /> this.DeriveFrom(new OperatorUnaryBitwiseBase());<br /> this.set_ClassName("OperatorBitwiseNot");<br /> this.set_Sign("~");<br />};</p><p>OperatorBitwiseNot.prototype.Evaluate = function(operands) {<br /> var val = this.GetOneNumberOperand(operands);</p><p> return new OperandNumber(~val.get_Value());<br />};