예제 6-13. 비트 연산
WEB/JAVASCRIPT-CONCEPT 2017. 11. 13. 09:14 |비트 연산
* 비트 개념
컴퓨터의 모든 정보는 0과 1 값만 가지는 2진수로 다루어지고 저장된다.
2진수의 한 자리수 = 비트
8개의 비트 = 바이트
* 비트 논리연산
a & b : 비트 AND 연산 : 두 비트 모두 1이면 1, 그렇지 않으면 0
a | b : 비트 OR 연산 : 두 비트 모두 0이면 0, 그렇지 않으면 1
a ^ b : 비트 XOR 연산 : 두 비트가 다르면 1, 같으면 0
~a : 비트 NOT 연산 : 1을 0으로, 0을 1로 변환
* 비트 시프트 연산
새로운 비트를 삽입/삭제하면서 비트의 자리를 이동하는 연산.(삽입/삭제 : 왼쪽/오른쪽)
오른쪽 시프트(>>)는 한번 할 때마다 2로 나누는효과
왼쪽 시프트(<<)는 한번 할 때마다 2를 곱하는 효과
ex)
10진수 : 3 -> 6 -> 12
2진수 : 11 -> 110 -> 1100
b = a << 1; // a의 비트들을 왼쪽으로 1비트 이동시킨 결과를 b에 저장. a 값 변경 없음
b = a >> 2; // a의 비트들을 오른쪽으로 2비트 이동시킨 결과를 b에 저장. a값 변경 없음
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>비트 연산</title> <script> function digit8(v) { // 숫자 v를 8비트 2진수로 변환 var str=""; for(i=0; i<8; i++, v<<=1) { if((v & 0x80)) str += "1"; else str += "0"; } return str; } </script> </head> <body> <h3>비트 논리 연산과 시프트 연산</h3> <hr> <script> var x=10, y=3; document.write("<pre>"); document.write("x=" + x + ", y=" + y + "<br>"); // x, y 값 출력 document.write("x : " + digit8(x) + "<br>"); // x 값 출력 document.write("y : " + digit8(y) + "<br>"); // y 값 출력 document.write("<hr>"); document.write("x & y : " + digit8(x&y) + "<br>"); document.write("x | y : " + digit8(x|y) + "<br>"); document.write("x ^ y : " + digit8(x^y) + "<br>") document.write("~x : " + digit8(~x) + "<br>"); document.write("<hr>"); document.write("x << 1 : " + digit8(x<<1) + " (" + (x<<1) + ")<br>"); document.write("x >> 1 : " + digit8(x>>1) + " (" + (x>>1) + ")<br>"); document.write("x >>> 1: " + digit8(x>>>1) + " (" + (x>>>1) + ")"); document.write("</pre>"); </script> </body> </html> | cs |
'WEB > JAVASCRIPT-CONCEPT' 카테고리의 다른 글
예제 6-15. if-else 사용 (0) | 2017.11.13 |
---|---|
예제 6-14. 문자열 연산 (0) | 2017.11.13 |
예제 6-12. 조건 연산 (0) | 2017.11.13 |
예제 6-11. 논리 연산 (0) | 2017.11.13 |
예제 6-10. 비교 연산 (0) | 2017.11.13 |