본문 바로가기

Programming/C++

C++ and 비트연산을 이용한 홀수, 짝수 판별

일반적으로 홀수, 짝수를 구한다고 하면 조건문을 사용해서 나머지를 확인할 것이다.

 

 

#include <iostream>

int main(){

	int test = 1234;
    
	if(test % 2 == 0){
		std::cout << "짝수" << std::endl;	
	}else{
		std::cout << "홀수" << std::endl;
	}

	return 0;
}

 

 

and 비트 연산은 양쪽 값의 bit가 모두 1(true) 이면 1, 둘 중에 하나라도 1이 아니면 0을 나타낸다.

이진법은 2의 0제곱 부터 시작하기 때문에, 2의 0제곱의 자리가 0이나 1이냐에 따라 홀수, 짝수 판별이 가능하다.

 

1011 & 0111 == 0011
0110 & 1000 == 0000

===================

//이진법 -> 십진법
1011 -> 11 //홀수
1010 -> 10 //짝수

 

 

따라서, and 비트 연산을 이용해서 쉽게 홀수, 짝수를 구할 수 있다.

 

 

#include <iostream>

int main(){

	int odd = 1357;
	int even = 2468;
    
	std::cout << (odd & 1) << std::endl;
	std::cout << (even & 1) << std::endl;

	return 0;
}

 

 

 

 

  • 활용

 

#include <iostream>
#include <string>

using namespace std;

int main() {

	string test1 = "123188wtafzxj";
	string test2 = "1234";

	bool result1;
	bool result2;

	test1.length() & 1 ? result1 = true : result1 = false;
	test2.length() & 1 ? result2 = true : result2 = false;	
}

 

 

홀수일 경우 참으로, 짝수일 경우 거짓으로 나타나게 하여, 조건문 등을 이용한 활용이 가능하다.