JavaScript Tutorial.49
JS BITWISE OPERATIONS
JavaScript Bitwise Operators
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 지정한 수만큼 비트를 전부 오른쪽으로 이동시키며, 새로운 비트는 전부 0이됨 |
EXAMPLES
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 Uses 32 bits Bitwise Operands
JavaScript는 숫자를 64비트 부동 소수점 숫자로 저장하지만 모든 비트 연산은 32비트 이진수에서 수행된다.
비트 연산이 수행되기 전에 JavaScript는 숫자
를 32비트 부호 있는 정수
로 변환한다.
비트 연산이 수행된 후 결과는 64비트
JavaScript 숫자로 다시 변환된다.
위의 예에서는 4비트의 부호 없는 이진수를 사용했다. 이 때문에
~ 5
는10
을 반환한다.JavaScript는 32비트 부호 있는 정수를 사용하므로
10
을 반환하지 않고-6
을 반환할 것이다.0000 0000 0000 0000 0000 0000 0000 0101 (5)
1111 1111 1111 1111 1111 1111 1111 1010 (~5 = -6)
부호 있는 정수는 가장 왼쪽 비트를 음수(빼기) 기호로 사용한다.
Bitwise AND
한 쌍의 비트에 대해 비트 AND를 수행하면 두 비트가 모두 1이면 1을 반환한다.
Bitwise OR
한 쌍의 비트에 대해 비트 OR를 수행하면 두 비트 중에 하나가 1이면 1을 반환한다.
Bitwise XOR
한 쌍의 비트에 대해 비트 XOR를 수행하면 두 비트의 값이 다르면 1을 반환한다.
JavaScript Bitwise AND (&)
비트 연산자 AND는 두 비트가 1일 때 1을 반환한다.
JavaScript Bitwise OR (|)
비트 연산자 OR는 두 비트 중 하나 이상이 1일 때 1을 반환한다.
JavaScript Bitwise XOR (^)
비트 연산자 XOR은 두 비트가 다를 때 1을 반환한다.
JavaScript Bitwise NOT (~)
JavaScript (Zero Fill) Bitwise Left Shift (<<)
모든 bit를 왼쪽으로 shift 시키고 맨 오른쪽에는 0
으로 채우고, 맨 왼쪽의 bit는 삭제한다.
5 << 1 : 5
에 대응하는 bit를 왼쪽으로 1
만큼 shift 시킨다.
JavaScript (Sign Preserving) Bitwise Right Shift (>>)
이것은 오른쪽 시프트를 유지하는 기호이다. 맨 왼쪽 비트값을 복사하여 맨 왼쪽에 추가하고, (복사본이 왼쪽에서 밀려 들어가고) 맨 오른쪽 비트가 사라진다.
부호를 유지시킨다?
JavaScript (Zero Fill) Right Shift (>>>)
맨 왼쪽에 0
을 추가하고, 맨 오른쪽 값을 삭제한다.
Binary Numbers
1 bit 세트만 있는 이진수는 이해하기 쉽다:
몇 bit를 더 설정하면 이진 패턴이 나타난다:
JavaScript 이진수는 2의 보수
형식으로 저장된다.
보수란, '두 수의 합이 진법의 밑수(N)가 되게 하는 수'를 말한다. 예를 들어 10진수
4의 10의 보수는 6
이고, 10진수2의 10의 보수는 8
이다. 보수는 컴퓨터에서 음의 정수를 표현하기 위해서 고안되었다. 컴퓨터 내부에서는 사칙연산을 할 때 덧셈을 담당하는 가산기(Adder)만 이용하기 때문에 뺄셈은 덧셈으로 형식을 변환하여 계산해야 한다. 즉 컴퓨터 내부에서는A - B
를 계산할 때B
의 보수(-B)
를 구한 다음A + (-B)
로 계산하는 것이다.▶ 1의 보수 : 각 자릿수의 값이 모두 1인 수에서 주어진 2진수를 빼면 1의 보수를 얻을 수 있다.
예시 ) 2진수1010의 1의 보수는 0101
이다.▶ 2의 보수 :
1의 보수
에1을 더한 값
과 같다.
예시 ) 2진수 1010에 대한 2의 보수를 구하려면 2진수 1010에 대한 1의 보수 0101을 구한 다음 1을 더해 0110을 얻는다.출처: 안경잡이개발자
Converting Decimal to Binary
dec >>> 0
으로 bit화 시켜주고, toString(n)으로 n진화 해준다 맞나
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Convert Decimal to Binary</h2>
<p id="demo"></p>
<p id="demo1"></p>
<script>
document.getElementById("demo").innerHTML = dec2bin(-5);
function dec2bin(dec){
return (dec >>> 0).toString(2);
}
document.getElementById("demo1").innerHTML = (5 >>> 0).toString(2);
</script>
</body>
</html>
Converting Binary to Decimal
parseInt()
출처: 어제 오늘 내일
parseInt(string, radix);
파라미터
string
- 숫자로 변환할 문자열
radix
- optional
- string 문자열을 읽을 진법(수의 진법 체계의 진법)
- 2~36의 수리턴 값
- string을 정수로 변환한 값을 리턴합니다. 만약, string의 첫 글자를 정수로 변경할 수 없으면 NaN(Not a Number) 값을 리턴합니다.
parseInt("10"); // 10
문자열 "10"을 숫자로 변환하여 정수 10을 리턴합니다.
parseInt("-10"); // -10
문자열 "-10"을 숫자로 변환하여 정수 음수 -10을 리턴합니다.
parseInt("10.9"); // 10
문자열 타입의 실수값은 소수점을 제거한 후, 정수값만 리턴합니다.
parseInt(10); // 10
파라미터로 문자열이 아닌 다른 타입의 값이 전달되면, 파라미터를 문자열로 변환하여 처리합니다.
parseInt("10n"); // 10
parseInt("10nnn13"); // 10
문자열의 첫글자가 숫자이고, 그 이후에 숫자가 아닌 다른 문자열이 나올 경우, 숫자가 아닌 문자 이후의 값은 무시하고, 그 이전의 숫자만 정수로 변환합니다.
parseInt(" 10"); // 10
문자열의 첫글자는 반드시 숫자여야 하지만, 처음에 오는 공백 문자는 허용됩니다.
parseInt("10 "); // 10
문자열의 첫글자가 숫자이면, 뒤에 오는 공백은 무시됩니다.
parseInt("k10"); // NaN
문자열의 첫글자가 숫자가 아니면, NaN(Not a Number)를 리턴합니다.
parseInt(""); // NaN
문자열에 공백이 입력되면, 문자열의 첫 글자가 숫자가 아니므로, NaN(Not a Number)를 리턴합니다.
Author And Source
이 문제에 관하여(JavaScript Tutorial.49), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@ansunny1170/JavaScript-Tutorial.48저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)