새해 휴가가 곧 다가오고 마침내 자유 시간이 있습니다. 나는 매일 다양한 기술 기사를 방문하며 이것은 훌륭한 상태입니다.
나는 오후에 JS에 관한 기사를 읽었고, 이와 같은 단락이 내 관심을 끌었습니다.
코드 사본은 다음과 같습니다.
(기능 () {
var names = [];
반환 함수 (이름) {
추가 이름 (이름);
}
함수 addName (이름) {
if (! ~ names.indexof (name)) // 존재하는 경우 추가하지 마십시오
이름 .push (이름);
console.log (이름); // [ "linkfly"]
}
} ()) ( 'linkfly');
if (! ~ names.indexof (name))를 의미하는 연산자 "! ~"는 무엇을 의미합니까? 이해하지 못하면 ~ 먼저 시작하십시오.
테스트는 결과 값 에이 규칙이 있음을 보여줍니다 - (x+1)
검색 후 일부 기사는 한 문장 만 잃어 버립니다. 바이너리 비트로 반전됩니다.
문자 그대로의 의미에서, 여기서 우리는 8 자리 바이너리 표현을 사용합니다 : 3 = 00000011, ~ 3 = 11111100, 위의 공식이 잘못되었습니다.
위의 설명은 여전히 너무 추상적이며 구체적이지 않습니다. 실제로 여기에는 원래 코드, 리버스 코드 및 보완 코드에 대한 지식이 포함됩니다.
원본 코드
원래 코드 표현의 가장 높은 비트는 부호 비트이며, 이는 0이고 1은 음수를 나타 내기 위해 1입니다. 나머지 비트는 숫자의 절대 값을 나타냅니다.
역 코드
서명 된 숫자의 경우 양수의 역 코드는 원래 코드와 동일합니다. 음수의 역 코드는 부호 비트를 제외한 비트의 비트 역입니다. 역 코드는 종종 보완 코드를 찾는 과정에서 중간 형태로 사용됩니다.
보어
양수의 보완은 원래 코드 및 역 코드와 동일합니다. 음수의 보완은 부호 비트를 제외하고 원래 코드를 반전시키고 마지막 비트에 1을 추가하는 것입니다. 즉, 숫자의 보완에 1을 추가하십시오. 컴퓨터의 숫자는 일반적으로 보완 형식으로 표현됩니다. 보완 코드에서 (-128) d는 (-0) d 대신 사용됩니다. 참고 : (-128) d에는 해당 원본 코드와 역 코드가 없습니다 (-128) d = (1000,000) b.
보완 작업을 찾으십시오
보완 조작은 부호 비트를 고려하지 않지만 원래 코드의 원래 비트를 반전시키고 마지막 비트에 1을 추가합니다. 숫자의 보완은 반대 숫자의 보완입니다.
저자의 기사 예제를 가져 와서 이해하십시오
~ 약간의 역전을 의미합니다. 00111이면 11000이됩니다 (비트 역전)
57의 이진 표현은 (1 바이트) : 00111001입니다
이진 후 비트 역전 (~ 57) : 11000110 이것은 소수점으로 표시됩니다 : -70
이것은 음수, 서명 번호입니다. 보완 코드를 사용하여 컴퓨터에서 음수를 표현해야합니다.
따라서 -70 (11000110) 부호 비트가 비트 후에 반전 된 후 (10111001), 1을 추가하면 (10111010)
소수 시스템으로 변경 : -58
따라서 ~ 57 = -58
이 시점에서 나는 마침내 그것을 알아 냈습니다. 요약 공식은 결과를 빠르게 그릴 수 있지만 이유를 설명 할 수는 없습니다. 기술자로서 우리는 공부하고 세부 사항을 깊이 들어가는 것을 좋아합니다.
시간 줘 :
기초는 모든 상위 레벨의 초석입니다. 도교를 실천하는 데 헌신한다면 길은 길다.
위는이 기사의 전체 내용입니다. 모두가 무언가를 얻을 수 있기를 바랍니다.