新年の休日はまもなく登場し、私はついに自由な時間を過ごします。私は毎日さまざまな技術記事を訪れますが、これは素晴らしい状態です。
午後にJSについての記事を読みましたが、このような段落が私の注意を引きました。
コードコピーは次のとおりです。
(関数 () {
var names = [];
return function(name){
addName(name);
}
関数addName(name){
if(!〜names.indexof(name))//存在する場合は、追加しないでください
names.push(name);
console.log(names); // ["linkfly"]
}
}())( 'linkfly');
if(!〜names.indexof(name))のオペレーター「!〜」は何を意味しますか?わからない場合は、最初に始めてください。
テストは、結果値にこのルールがあることを示すことができます - (x+1)
検索後、一部の記事は1つの文だけを失います:バイナリビットによって反転します
文字通りの意味から、ここでは8桁のバイナリ表現を使用します:3 = 00000011、〜3 = 11111100、上記の式は間違っています。
上記の説明はまだ抽象的すぎて、具体的ではありません。実際、これには、元のコード、逆コード、および補完コードの知識が含まれます。
元のコード
元のコード表現の最も高いビットは記号ビットです。これは、正の数を示すために0、負の数を示すために1です。残りのビットは、数の絶対値を表します。
逆コード
署名された番号の場合、正の数字の逆コードは元のコードと同じです。負の数の逆コードは、記号ビットを除いてビットのビットの逆です。逆コードは、補体コードを見つけるプロセスで中間形としてよく使用されます。
補体
正の数の補体は、元のコードおよび逆コードと同じです。負の数の補体は、サインビットを除いて元のコードを反転させ、最後のビットに1を追加することです。つまり、数の補数に1を追加します。コンピューターの数値は一般に補数形式で表現されます。補体コードでは、(-0)dの代わりに(-128)dが使用されます。注:(-128)Dには、対応する元のコードと逆コードがありません(-128)d =(1000,000)b。
補完操作を見つけます
補数操作は、サインビットを考慮していませんが、元のコードの元のビットを反転させ、最後のビットに1を追加します。数値の補体は、反対の数の補体です。
著者の記事の例を取り、それを理解してください
〜はビットワイズの反転を意味します。 00111の場合、11000(ビットワイズ反転)になります
57のバイナリ表現は(1バイト):00111001です
ビットワイズ反転後のバイナリ(〜57):11000110これは10進数として表されます:-70
これは負の数であり、署名された数です。補数コードを使用して、マイナス数をコンピューターで表現する必要があります。補完=シンボルビットが反転し、1が追加されます。
したがって、-70(11000110)の記号ビットがビットごとに反転した後、それは(10111001)であり、1を追加します、それは(10111010)です
小数システムに変更:-58
したがって、〜57 = -58
この時点で、私はついにそれを理解しました。要約式はすぐに結果を引き出すことができますが、その理由を説明することはできません。技術者として、私たちは勉強し、詳細に深く入りたいと思っています。
時間を与える:
基礎は、すべての上位レベルの礎石です。道教の実践に専念するなら、道は長いです。
上記は、この記事のコンテンツ全体です。みんなが何かを得られることを願っています。