2016-04-22 8 views
-3

スウィフトコードをJavascriptに変換しようとしていますが、スウィフトのこれらの演算子のいくつかがわからないためにバンプが発生しました。そのため、それを類似のJavascriptフォーム。ここでは、コードされています、portはすでにスウィフト演算子の説明

private var portMasks = [UInt8](count: 3, repeatedValue: 0) 

var newMask = UInt8(newState.rawValue * Int(powf(2, Float(pinIndex)))) 
portMasks[Int(port)] &= ~(1 << pinIndex) //prep the saved mask by zeroing this pin's corresponding bit 
newMask |= portMasks[Int(port)] //merge with saved port state 
portMasks[Int(port)] = newMask 
data1 = newMask<<1; data1 >>= 1 //remove MSB 
data2 = newMask >> 7 //use data1's MSB as data2's LSB 

pinIndex定義されているとの両方UInt8です。

私は実際のコンバージョンを探していません - 自分でそれを行うことができます。これらの行のそれぞれが何を数学的/プログラム的な観点からしているのかの説明を探してください。

+4

すべてのスウィフト演算子については、リファレンス:https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/AdvancedOperators.html#//apple_ref/doc/uid/TP40014097-CH27に詳しく記載されています。 -ID28。 –

+0

このリンクをお寄せいただきありがとうございます!いくつかの演算子がありますが、 '> ='と '| ='がありません –

+1

少なくともドキュメントを参照する前にSwiftに関する質問を投稿していませんでしたか? :) –

答えて

0
新しい遊び場を起動し、この内部をコピー

var port: UInt8 = 1 
var pinIndex: UInt8 = 2 
var newState: Int = 23 

var portMasks = [UInt8](count: 3, repeatedValue: 0) 

var newMask = UInt8(newState * Int(powf(2, Float(pinIndex)))) 
portMasks[Int(port)] &= ~(1 << pinIndex) //prep the saved mask by zeroing this pin's corresponding bit 
newMask |= portMasks[Int(port)] //merge with saved port state 
portMasks[Int(port)] = newMask 
var data1 = newMask<<1; data1 >>= 1 //remove MSB 
var data2 = newMask >> 7 //use data1's MSB as data2's LSB 

あなたは右サイドへの影響を見ることができます。

<< >> move bits by that amount 
| logical or 
& logical and 
~ logical negation 

はそれがここで使用されているものすべてだと思います。基本的には、あなたのコードは単一ビット(1 < < bitPositionで参照されています)を操作し、それらをオンまたはオフにします。

これらの2行は同じ意味:

variable OPERATOR= something 
variable = variable OPERATOR something 

は少し周りを再生するために提案し、その後、具体的な質問に戻ってくるだろう。

+0

ありがとう!これをチェックしてみましょう –