ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScriptにおけるビット単位のNOT演算子の使い方_基礎知識

JavaScriptにおけるビット単位のNOT演算子の使い方_基礎知識

WBOY
WBOYオリジナル
2016-05-16 17:15:191159ブラウズ

~: ビット単位の NOT 演算子はチルダ (~) で表されます。ビット単位の NOT 演算の実行結果は、戻り値の補数になります。

コードをコピー コードは次のとおりです。

var num1 = 3;数値は 3 です
var num2 = ~(num1);
console.log(num2) // "-4"
var num3 = -3;
var num4 = ~(num3);
console.log(num4) // "2"
console.log(~(0)) // "-1"

はい、これで ~ 演算子の原理が分かりました。幸せですか? 。 。 。この章は何度も読みましたが、満足ではありません。 。 。使ったことがないので本当に恥ずかしいです。この演算子はどこで使用できると思いますか?親切。 。 。少し考えて、同僚からのコードを入力します:
コードをコピーします コードは次のとおりです:

if(〜Item [search_key] .tolowercase()。indexof(query)){


if( str.indexOf(query) != -1 ) または if( str.indexOf(query) >= 0)



コードをコピー


コードは次のとおりです:


var str = "hutaoer go go go!!!! 私のラッキーナンバーは 33 です!!";
var query = 33;
var timeStart1 = new Date() - 0;
for(var i = 0; i < 100000000; i ) { ~str.indexOf(query) } var timeEnd1 = new Date() - 0; console.log('~ コスト時間:' (timeEnd1 - timeStart1)); // ~ コスト時間:9954 ループ数: 10000000 // ~ コスト時間:104 ループ数: 100000
var timeStart2 = new Date() - 0;
for(var j = 0 ; j <100000000; j ) {
str.indexOf(query) >= 0
}
var timeEnd2 = new Date() - 0;
コンソール.log('>= コスト時間:' (timeEnd2 - timeStart2));
// >= コスト時間:10120 ループ数: 10000000


プログラムの更新: オリジナルのテストコードは分割線より上では変更されません。コードは次のとおりです:




コードをコピーします


コードは次のとおりです:

var str = "hutaoer go go go!!!!! 私のラッキーナンバーは 33 です!!";
var query = 33;
var timeStart1 = new Date() - 0;
for(var i = 0; i ~str.indexOf(query)
}
var timeEnd1 = new Date() - 0;
console.log ('~ コスト時間:' (timeEnd1 - timeStart1));
// 周环1000000次 127ms
var timeStart2 = new Date() - 0;
for(var j = 0; j str.indexOf(query) >= 0
}
var timeEnd2 = new Date() - 0;
console.log('>= コスト時間:' ( timeEnd2 - timeStart2));
// 循環1000000次 101ms
var timeStart3 = new Date() - 0;
for(var k = 0; k Boolean (~str.indexOf(query))
}
var timeEnd3 = new Date() - 0;
console.log('ブールコスト時間を追加:' (timeEnd3 - timeStart3));
// 循環1000000次 129ms
var timeStart4 = new Date() - 0;
for(var k = 0; k !!(~str.indexOf(query) )
}
var timeEnd4 = new Date() - 0;
console.log('add !!コスト時間:' (timeEnd4 - timeStart4));
// 周环10000000次 103ms

其实,对一次运算本身来说,相差無几,只是在周环次数过大,比如超过
【更新 2013.10.27 17:28】 修正後のテストにより、この中で「非配置」でも効率が最高であることがわかりました。これは、私が以前よく使っていた、比較数字を使った写し方です。今日、私たちは教義を計算しました。あるいは、いくつかの単純な一般的な計算を直接使用することは、より良い選択になる可能性があります。私たちは、これらの技術を利用して、アップアプリケーションの動作を制御したり、許可したりすることができます。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。