Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- C언어
- diag
- AUTOSAR
- 싱글링크드리스트
- softwareComponent
- 배열
- Mobilgen
- Can
- Can 스택
- Com Stack
- 순수가상함수
- 진료순서정하기
- 정적할당
- CAN stack
- VFB
- AUTOSA
- Com 스택
- 단방향링크드리스트
- MCU
- C++
- ecu
- UDS
- RTE
- Classic AUTOSAR
- Application Layer
- AUTOSAR CAN통신
- C
- COM모듈
- AutoSar설계
- UDS프로토콜
Archives
- Today
- Total
이현구의 공부방
[C/C++] 비트연산으로 홀수, 짝수 구분하기 본문
정수형 값이 홀수인지 짝수인지 구분하는 계산 방법 중 많은 사람이 나머지 값을 가지고 홀수 짝수를
구분 짓는 경우가 많다.
string solution(int num) {
string answer = "";
if (num % 2 == 1 || num % 2 == -1 )
{
answer = "Odd";
}
else
{
answer = "Even";
}
return answer;
}
하지만 비트의 첫번째 자릿수가 1인지 아닌지 확인으로도 홀수 짝수 구분이 가능합니다.
#include <string>
#include <vector>
using namespace std;
string solution(int num) {
string answer = "";
return num & 1 ? "Odd" : "Even"; // &은 비트연산의 AND 연산
}
예를 들어, "num"이 5인 경우, 이를 2진수로 표현하면 101입니다. "1"은 2진수로 001이므로, "num & 1"은 다음과 같이 계산됩니다.
101
& 001
-----
001
따라서, "num & 1"의 결과는 1입니다.
이는 "num"이 홀수인지 짝수 인지를 판별하는데 사용됩니다.
홀수일 경우 결과 값이 1이 되고, 짝수일 경우 결과 값이 0이 됩니다.
다른 예로, "num"이 6인 경우, 이를 2진수로 표현하면 110입니다. "1"은 2진수로 001이므로, "num & 1"은 다음과 같이 계산됩니다.
110
& 001
-----
000
따라서, "num & 1"의 결과는 0입니다. 이는 "num"이 홀수가 아니므로 짝수임을 판별하는데 사용됩니다.
이처럼 "&" 연산자를 이용하여 비트 단위로 AND 연산을 수행하면, 특정 비트의 값을 추출하거나, 비트 연산을 수행할 수 있습니다.
'C++를 해보자 > 기본기' 카테고리의 다른 글
[C/C++] accumlate 평균 구하기 (0) | 2023.03.05 |
---|---|
[C/C++] String배열과 Char 형 배열 (0) | 2022.07.09 |
[C/C++] 배열 - 1 (0) | 2022.07.07 |
[C/C++] Printf 함수 따옴표, 쌍따옴표, 역슬래시 출력 방법 (0) | 2022.07.03 |
Comments