강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

최민영님의 프로필 이미지
최민영

작성한 질문수

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

▶ 이론 통합 요약본 파일 다운 받는 곳 ◀ (v1.2)

이론 v0.91 오타 문의

해결된 질문

작성

·

68

0


  • 10. 프로그래밍 언어 활용 에서

     

  • 3.java 관계연산자/비트연산자의 문제풀이 보시면 F | T 할때 F 를 0000 T를 1111로 표현하던데 true는 0001 아닌가요? F|T -> 0000 | 1111 -> 1111 -> T 라고 되어잇고 XOR 연산자에도 T를 1111 로 표기해서 묻습니다.

    •  

퀴즈

소프트웨어 개발 과정에서 사용자 피드백을 빠르게 반영하여 점진적으로 개선하는 방식의 모델은 무엇일까요?

폭포수 모델

프로토타이핑 모델

V 모델

스파이럴 모델

답변 2

0

주말코딩님의 프로필 이미지
주말코딩
지식공유자

안녕하세요.

학습자료를 보니 오해하게 되어있네요. 전체가 false인지 true인지만 판단해야하는데 잘못된 비트로 표현되어 있습니다. 좀 더 구체적으로 적어서 다음 버전 PDF에 반영하겠습니다.

 

재차 설명을 드리자면,

public class Main {
    public static void main(String[] args) {
        int w=3, x=4, y=3, z=5;
        if((w == 2 | w == y & !(y > z)&(1 == x^y != z)))
        {
            w = x + y;
            if(7 == x^y!= w) {
                System.out.println(w);
            } else {
                System.out.println(x);
            }
        } else {
            w = y + z;
            if(7 == y^z != w){
                System.out.println(w);
            } else {
                System.out.println(z);
            }
        }
    }
}

 

첫 번째 조건문에서는 w == 2는 false, w==y는 true, !(y>z)는 true가 됩니다.

(1 == x^y != z)는 (1 == x) ^ (y != z)로 풀어서 해석하시면 됩니다.

각각 false ^ true가 되며 ^는 XOR이므로 둘이 다르면 true가 됩니다.

 


바깥의 if문은

(w == y) & (!(y > z)) & ((1 == x) ^ (y != z))
= true & true & true
= true

이렇게 되고 전체는

(w == 2 | true)
= false | true
= true

이렇게 됩니다.

 

그래서 변수 w는 4+3으로 7이 할당됩니다.

 


 

두 번째는 같은 원리로 if ( (7 == x) ^ (y != w) )가 false ^ true = true가 되고

안쪽 if문이 참이기 때문에 println(w)가 되고 앞에서 할당된 7이 출력됩니다.

 

|는 boolean에 쓰는 경우 논리OR가 되고 정수에 되면 비트OR가 됩니다.

int a = 5;   // 0101

int b = 3;   // 0011

System.out.println(a | b); // 7

이렇게 생각하시면 됩니다.

0

안녕하세요, 인프런 AI 인턴입니다. 최민영님.

비트 연산자와 관련된 질문에 대해 답변드리겠습니다. 논리 연산자와 비트 연산자는 다르게 작용합니다. 비트 연산자에서는 각 비트의 값을 보게 되는데, 파이썬이나 C와 같은 언어에서 일반적으로 True1로, False0으로 표현됩니다. 하지만 문제에서 설명한 것처럼 TF를 각각 11110000로 사용하는 것은 설명의 간소화를 돕기 위해 모든 비트를 1 또는 0으로 표시한 예시일 수 있습니다.

비트 연산에서 OR(|) 연산자는 두 비트 중 하나라도 1이면 결과가 1이 됩니다. 따라서 F | T0000 | 1111으로 해석되는 경우 결과는 1111이 되어 True가 맞습니다. 이와 같은 표시 방법은 일반적인 비트 마스크와 유사한 컨셉으로, 실제 연산의 논리 구조 설명을 돕기 위한 것입니다.

이와 관련한 추가적인 설명이나 예시를 제공하고 있는 기존 질문을 참고하시면 도움이 될 것입니다:

  • 쉬프트연산 - 비트 연산자 사용법에 대한 게시물로, 비트 연산에 대한 전반적인 이해를 높일 수 있는 자료입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

최민영님의 프로필 이미지
최민영

작성한 질문수

질문하기