JS 튜토리얼

제이에스 홈 JS 소개 JS 어디로 JS 출력 JS 문 JS 구문 JS 코멘트 JS 변수 제이에스렛 JS 상수 JS 연산자 JS 산술 JS 할당 JS 데이터 유형 JS 함수 JS 객체 JS 이벤트 JS 문자열 JS 문자열 메서드 JS 문자열 검색 JS 문자열 템플릿 JS 번호 JS 숫자 메서드 JS 배열 JS 배열 메서드 JS 배열 정렬 JS 배열 반복 JS 배열 상수 JS 날짜 JS 날짜 형식 JS 날짜 가져오기 메서드 JS 날짜 설정 방법 JS 수학 JS 랜덤 JS 부울 JS 비교 JS 조건 JS 스위치 JS 루프 In에 대한 JS 루프 의 JS 루프 JS 루프 동안 JS 브레이크 JS 이터러블 JS 세트 JS 맵 JS 유형 JS 유형 변환 JS 비트와이즈 JS 정규 표현식 JS 오류 JS 범위 JS 호이스팅 JS 엄격 모드 JS 이 키워드 JS 화살표 함수 JS 클래스 JS JSON JS 디버깅 JS 스타일 가이드 JS 모범 사례 JS 실수 JS 성능 JS 예약어

JS 버전

JS 버전 JS 2009(ES5) JS 2015(ES6) JS 2016 JS 2017 JS 2018 JS IE / 엣지 JS 연혁

JS 객체

객체 정의 개체 속성 개체 메서드 개체 표시 개체 접근자 객체 생성자 개체 프로토타입 객체 반복 가능 객체 세트 객체 맵 개체 참조

JS 함수

기능 정의 기능 매개변수 함수 호출 함수 호출 기능 적용 함수 클로저

JS 클래스

수업 소개 클래스 상속 클래스 정적

JS 비동기

JS 콜백 JS 비동기 JS 약속 JS 비동기/대기

JS HTML DOM

DOM 소개 DOM 메서드 DOM 문서 DOM 요소 DOM HTML DOM 양식 DOM CSS DOM 애니메이션 DOM 이벤트 DOM 이벤트 리스너 DOM 탐색 DOM 노드 DOM 컬렉션 DOM 노드 목록

JS 브라우저 BOM

JS 창 JS 화면 JS 위치 JS 연혁 JS 네비게이터 JS 팝업 경고 JS 타이밍 JS 쿠키

JS 웹 API

웹 API 소개 웹 양식 API 웹 기록 API 웹 스토리지 API 웹 작업자 API 웹 가져오기 API 웹 지리적 위치 API

JS 아약스

AJAX 소개 AJAX XMLHttp AJAX 요청 AJAX 응답 AJAX XML 파일 AJAX PHP AJAX ASP AJAX 데이터베이스 AJAX 애플리케이션 AJAX 예제

JS JSON

JSON 소개 JSON 구문 JSON 대 XML JSON 데이터 유형 JSON 구문 분석 JSON 문자열화 JSON 객체 JSON 배열 JSON 서버 JSON PHP JSON HTML JSON JSONP

JS 대 jQuery

jQuery 선택기 제이쿼리 HTML 제이쿼리 CSS 제이쿼리 DOM

JS 그래픽

JS 그래픽 JS 캔버스 JS 플로틀리 JS 차트.js JS 구글 차트 JS D3.js

JS 예제

JS 예제 JS HTML DOM JS HTML 입력 JS HTML 객체 JS HTML 이벤트 JS 브라우저 JS 편집기 JS 연습 JS 퀴즈 JS 인증서

JS 참조

자바스크립트 객체 HTML DOM 객체


JavaScript 비트 연산


JavaScript 비트 연산자

Operator Name Description
& AND Sets each bit to 1 if both bits are 1
| OR Sets each bit to 1 if one of two bits is 1
^ XOR Sets each bit to 1 if only one of two bits is 1
~ NOT Inverts all the bits
<< Zero fill left shift Shifts left by pushing zeros in from the right and let the leftmost bits fall off
>> Signed right shift Shifts right by pushing copies of the leftmost bit in from the left, and let the rightmost bits fall off
>>> Zero fill right shift Shifts right by pushing zeros in from the left, and let the rightmost bits fall off

Operation Result Same as Result
5 & 1 1 0101 & 0001  0001
5 | 1 5 0101 | 0001  0101
~ 5 10  ~0101  1010
5 << 1 10 0101 << 1  1010
5 ^ 1 4 0101 ^ 0001  0100
5 >> 1 2 0101 >> 1  0010
5 >>> 1 2 0101 >>> 1  0010

JavaScript는 32비트 비트 피연산자를 사용합니다.

JavaScript는 숫자를 64비트 부동 소수점 숫자로 저장하지만 모든 비트 연산은 32비트 이진수에서 수행됩니다.

비트 연산이 수행되기 전에 JavaScript는 숫자를 32비트 부호 있는 정수로 변환합니다.

비트 연산이 수행된 후 결과는 64비트 JavaScript 숫자로 다시 변환됩니다.

위의 예에서는 4비트의 부호 없는 이진수를 사용합니다. 이 때문에 ~ 5는 10을 반환합니다.

JavaScript는 32비트 부호 있는 정수를 사용하므로 10을 반환하지 않고 -6을 반환합니다.

0000000000000000000000000000101 (5)

111111111111111111111111111111010 (~5 = -6)

부호 있는 정수는 가장 왼쪽 비트를 빼기 기호로 사용합니다.



비트 AND

한 쌍의 비트에 대해 비트 AND를 수행하면 두 비트가 모두 1이면 1을 반환합니다.

한 비트 예:
작업결과
0 & 00
0 & 10
1 & 00
1 & 11
4비트 예:
작업결과
1111 & 00000000
1111 & 00010001
1111 & 00100010
1111 & 01000100

비트 OR

비트 쌍에 대해 비트 OR이 수행되면 비트 중 하나가 1이면 1을 반환합니다.

한 비트 예:
작업결과
0 | 00
0 | 1
1 | 01
1 | 11
4비트 예:
작업결과
1111 | 00001111
1111 | 00011111
1111 | 00101111
1111 | 01001111

비트 XOR

비트 쌍에 대해 비트 XOR을 수행할 때 비트가 다르면 1을 반환합니다.

한 비트 예:
작업결과
0 ^ 00
0 ^ 1
1 ^ 01
1 ^ 1
4비트 예:
작업결과
1111 ^ 00001111
1111 ^ 00011110
1111 ^ 00101101
1111 ^ 01001011

JavaScript 비트 AND(&)

비트 AND는 두 비트가 모두 1인 경우에만 1을 반환합니다.

소수바이너리
500000000000000000000000000000101
100000000000000000000000000000001
5 & ​​10000000000000000000000000000001 (1)

예시

let x = 5 & 1;

JavaScript 비트 OR(|)

비트 OR은 비트 중 하나가 1인 경우 1을 반환합니다.

소수바이너리
500000000000000000000000000000101
100000000000000000000000000000001
5 | 10000000000000000000000000000101 (5)

예시

let x = 5 | 1;

JavaScript 비트 XOR(^)

비트별 XOR은 비트가 다른 경우 1을 반환합니다.

소수바이너리
500000000000000000000000000000101
100000000000000000000000000000001
5 ^ 10000000000000000000000000000100 (4)

예시

let x = 5 ^ 1;

JavaScript 비트 NOT(~)

소수바이너리
500000000000000000000000000000101
~511111111111111111111111111111010 (-6)

예시

let x = ~5;

JavaScript(0 채우기) 비트 왼쪽 시프트(<<)

이것은 0 채우기 왼쪽 시프트입니다. 하나 이상의 0비트가 오른쪽에서 푸시되고 맨 왼쪽 비트가 떨어집니다.

소수바이너리
500000000000000000000000000000101
5 << 10000000000000000000000000001010 (10)

예시

let x = 5 << 1;

JavaScript(기호 보존) 비트 오른쪽 시프트(>>)

이것은 오른쪽 시프트를 유지하는 기호입니다. 맨 왼쪽 비트의 복사본이 왼쪽에서 밀려 들어가고 맨 오른쪽 비트가 떨어집니다.

소수바이너리
-511111111111111111111111111111011
-5 >> 111111111111111111111111111111101 (-3)

예시

let x = -5 >> 1;

JavaScript(0 채우기) 오른쪽 시프트(>>>)

이것은 0 채우기 오른쪽 시프트입니다. 하나 이상의 0비트가 왼쪽에서 푸시되고 맨 오른쪽 비트가 떨어집니다.

소수바이너리
500000000000000000000000000000101
5 >>> 10000000000000000000000000000010 (2)

예시

let x = 5 >>> 1;

이진수

1비트 세트만 있는 이진수는 이해하기 쉽습니다.

이진 표현10진수 값
000000000000000000000000000000011
00000000000000000000000000000102
00000000000000000000000000001004
000000000000000000000000000010008
0000000000000000000000000001000016
0000000000000000000000000010000032
0000000000000000000000000100000064

몇 비트를 더 설정하면 이진 패턴이 나타납니다.

이진 표현10진수 값
000000000000000000000000000001015 (4 + 1)
0000000000000000000000000000110113 (8 + 4 + 1)
0000000000000000000000000010110145 (32 + 8 + 4 + 1)

JavaScript 이진수는 2의 보수 형식으로 저장됩니다.

즉, 음수는 숫자에 1을 더한 비트 NOT입니다.

이진 표현10진수 값
000000000000000000000000000001015
11111111111111111111111111111011-5
00000000000000000000000000001106
111111111111111111111111111111010-6
0000000000000000000000000010100040
11111111111111111111111111011000-40

10진수를 2진수로 변환

예시

function dec2bin(dec){
  return (dec >>> 0).toString(2);
}

2진수를 10진수로 변환

예시

function bin2dec(bin){
  return parseInt(bin, 2).toString(10);
}