Javascript bit값 체크

사내 프로젝트 진행중 Javascript로 bit값을 체크 해야 할 일이 생겼습니다.

여기서 bit값 체크란? 원하는 번째의 비트값이 0인지 1인지를 확인하는 겁니다.


예를 들어 숫자 100의 2진수는 1100100입니다.

1100100의 2진수 값의

0번째 : 0

1번째 : 0

2번째 : 1

3번째 : 0

4번째 : 0

5번째 : 1

6번째 : 1


위와 같이 내가 알고싶은 번째의 비트값을 확인 하고 싶을때 Javascript로는 어떻게 체크를 할까?

머리가 별로 좋지 않아 예전 Java에서 사용한 로직을 힌트로해서 방법을 찾았습니다.


대단한 방법은 아니고... Math.pow라는 함수를 사용해 거듭제곱을 구해 and연산 하는 방식으로 해서 bit값을 알아내는 방법을 썼습니다.

지식이 별로 없어 설명 하기도 힘드네요..^^;

소스를 보시면 금방 아실껍니다.

샘플 소스

<script>
/**
 * 비트값 확인
 * @param value    10진수 값
 * @param bitDigit 비트번째
 * @returns true:1, false:0
 */
function intToBitDigitValue(value, bitDigit) {
	
        // 비트번째의 거듭제곱을 구함.
	var bitVal = Math.pow(2, bitDigit);
	value = parseInt(value, 10);

        // 입력된 값과 거듭제곱을 AND연산후
        // 결과 값이 거듭제곱과 같으면 비트값은 1, 틀리면 0
	if (parseInt((value & bitVal), 10) == bitVal) {
		return true;
	} else {
		return false;
	}
	
}


function confirmValue() {
	var val = document.getElementById("targetVal").value;
	var bitDigt = document.getElementById("bitDigt").value;
		
	
	if (val == ""|| bitDigt == "") {
		return;
	}
	document.getElementById("binText").innerHTML=(parseInt(val, 10)).toString(2);
	document.getElementById("bitText").innerHTML=intToBitDigitValue(val, bitDigt);
		
}
</script>


예제소스는 Javascript만 있습니다. 예제소스는 파일(비트값 확인.html)첨부되어 있습니다 참조 하세요.

실행

bit_val.PNG

시작 번째는 서두의 예를 들었던 것처럼 0번째부터 시작하고 방향은 오른쪽->왼쪽 방향입니다.

Javascript로 bit값 까지 확인해야 할일이 생길줄은 몰랐습니다. ^^;


감사합니다.