비트 연산자를 사용하여 정수가 짝수인지 홀수인지 확인하는 방법
비트 연산자를 사용하여 정수가 짝수인지 홀수인지 확인하는 방법
"짝수"와 "홀수"가 "비트"로 무슨 의미인지 생각해 보십시오.이진 정수 데이터는 2의 배수를 나타내는 비트와 함께 저장되므로, 최하위 비트는 2에 해당하며0, 다른 모든 비트는 2의 배수(2 = 22, 2 = 4 등)에1 해당합니다.무료 ASCII 아트:
NNNNNN|||||||||| | ||+-- 비트 0, 값 = 1 (20)|||||+--- 비트1, 값 = 2 (21)|| ||+----- 비트 2, 값 = 4 (22)|||+----- 비트3, 값 = 8 (23)|||+------- 비트 4, 값 = 164 (2)||+------- 비트 5, 값 = 32 (25)|+--------- 비트 6, 값 = 64 (26)+------- 비트7(최고순서 비트), 부호 없는 번호의 경우 값 = 128 (27)부호 있는 숫자에 대한 값 = -128(-27)(2의 보완)
8개밖에 안 보여드렸는데 아시겠죠?
따라서 정수가 짝수인지 홀수인지는 최하위 비트만 보면 알 수 있습니다.설정되어 있으면 홀수입니다.그렇지 않으면 비긴다.다른 비트는 모두 2의 배수를 나타내므로 값을 홀수로 만들 수 없기 때문에 상관하지 않습니다.
이 비트는 해당 언어의 AND 연산자를 사용하는 방식으로 볼 수 있습니다.B(네, B)에서 구문적으로 파생된 C 및 기타 많은 언어에서 해당 연산자는 다음과 같습니다.&
베이직에서는 보통And
. 정수를 1(최저 순서의 비트만 설정된 숫자)로 지정하고 결과가 0이 아니면 비트가 설정된 것입니다.
어떤 언어를 사용하는지 모르기 때문만이 아니라 질문에 "숙제"라고 표시했기 때문에 일부러 여기에 코드를 입력하지 않았습니다. :-)
C(및 대부분의 C-like 언어)
if (number & 1) {
// It's odd
}
if (number & 1)
number is odd
else // (number & 1) == 0
number is even
예를 들어 홀수인 정수 25를 예로 들어 보겠습니다.이진수 25는00011001
. 최하위 비트는b0
는 1 입니다.
00011001
00000001 (00000001 is 1 in binary)
&
--------
00000001
짐의 대답에 대한 각주입니다.
C#에서는 C와 달리 비트 AND는 결과 값을 반환하므로 다음과 같이 입력합니다.
if ((number & 1) == 1) {
// It's odd
}
if(x & 1) // '&' is a bit-wise AND operator
printf("%d is ODD\n", x);
else
printf("%d is EVEN\n", x);
예:
For 9:
9 -> 1 0 0 1
1 -> & 0 0 0 1
-------------------
result-> 0 0 0 1
모든 홀수의 오른쪽 비트는 1이므로 9 AND 1은 1이 됩니다.
For 14:
14 -> 1 1 1 0
1 -> & 0 0 0 1
------------------
result-> 0 0 0 0
따라서 14 AND 1은 0이 됩니다. 모든 짝수의 오른쪽 비트가 0이기 때문입니다.
에서는 ""를 사용해야 .if((number&1)==1){//then odd}
및 에서는 Java가 C#과 같은 를 사용하기int
이 안 되다boolean
boolean
: "),true
★★★★★★★★★★★★★★★★★」false
을 0으로 나 C와 같은 C++는 0으로 합니다.true
.
Check Number is Even or Odd using XOR Operator
Number = 11
1011 - 11 in Binary Format
^ 0001 - 1 in Binary Format
----
1010 - 10 in Binary Format
Number = 14
1110 - 14 in Binary Format
^ 0001 - 1 in Binary Format
----
1111 - 15 in Binary Format
AS It can observe XOR Of a number with 1, increments it by 1 if it is
even, decrements it by 1 if it is odd.
코드:
if((n^1) == (n+1))
cout<<"even\n";
else
cout<<"odd\n";
를 사용하면 간단하게 할 수.&
환입니니다다
if(num & 1)
{
//I am odd number.
}
자세한 내용은 여기를 참조하십시오. C의 비트 연산자를 사용하여 짝수 확인
#include <iostream>
#include <algorithm>
#include <vector>
void BitConvert(int num, std::vector<int> &array){
while (num > 0){
array.push_back(num % 2);
num = num / 2;
}
}
void CheckEven(int num){
std::vector<int> array;
BitConvert(num, array);
if (array[0] == 0)
std::cout << "Number is even";
else
std::cout << "Number is odd";
}
int main(){
int num;
std::cout << "Enter a number:";
std::cin >> num;
CheckEven(num);
std::cout << std::endl;
return 0;
}
자바에서는
if((num & 1)==0){
//its an even num
}
//otherwise its an odd num
이것은 오래된 질문이지만, 다른 답변에서는 누락되어 있습니다.
「 」의 에, 「 」의 사용도 합니다.num & 1
, 을.num | 1 > num
.
은, , 원래의 값인 「이러한 값」이 에, 는 같게 됩니다.num
세트로 만, 의 값이 1비트인 는,num
짝수인 경우에는 1비트가 설정되지 않기 때문에 1로 변경하면 새로운 값이 1만큼 커집니다.
언급URL : https://stackoverflow.com/questions/5700911/how-do-i-check-if-an-integer-is-even-or-odd-using-bitwise-operators
'programing' 카테고리의 다른 글
경로가 파일 또는 폴더를 나타내는지 확인합니다. (0) | 2022.07.02 |
---|---|
0으로 채워진 포인터를 표시하기 위해 printf를 사용하는 올바른 방법은 무엇입니까? (0) | 2022.07.02 |
Vue2 - Vanilla ONKEYPRESS 함수를 메서드로 변환 (0) | 2022.07.02 |
VueJS 줄바꿈 문자가 올바르게 렌더링되지 않음 (0) | 2022.07.02 |
ffmpeg에서 하드웨어 액셀러레이션을 사용하는 방법 (0) | 2022.07.02 |