Microsoft MVP성태의 닷넷 이야기
C# 7.1 235p 질문입니다. [링크 복사], [링크+제목 복사]
조회: 7795
글쓴 사람
꾸엉
홈페이지
첨부 파일
 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Collections;


namespace Study1
{
    enum Days
    {
        Sunday = 1, Monday = 2, Tuesday = 4,
        Wednesday = 8, Thursday = 16, Friday = 32, Saturday = 64
    }

    class Program
    {
        static void Main(string[] args)
        {
            Days workingDays = Days.Monday | Days.Tuesday |
                Days.Wednesday | Days.Thursday | Days.Friday;

            Console.WriteLine(workingDays.HasFlag(Days.Sunday));

            Days today = Days.Friday;
            Console.WriteLine(workingDays.HasFlag(today));

            Console.WriteLine(workingDays);
        }
    }
}

여기서
Console.WriteLine(workingDays); 의 출력 결과가 62로 나오는데

2+4+8+16+32의 결과인 62라서 맞는 결과라고 하셨는데


    enum Days
    {
        Sunday = 1, Monday = 2, Tuesday = 4,
        Wednesday = 8, Thursday = 16, Friday = 40, Saturday = 64
    }

Console.WriteLine(workingDays);

이렇게 Friday에 40이라는 값을 넣고 실행하면
2+4+8+16+40의 결과인 70이 출력되야 하는거 아닌가요??

저 값을 변경해도 70이 아니라 62가 출력되네요 ㅜㅜ

제가 어떤 부분을 잘못 이해하고 있는건가요??








[최초 등록일: ]
[최종 수정일: 10/31/2018]


비밀번호

댓글 작성자
 



2018-10-31 09시53분
[거북이] 제가 비전공자라 비트연산 대게 애먹었는데, 아직도 노트에다 적으면서 합니다.

https://m.blog.naver.com/jindogg/30141793578

이글 보시면 이해되실거에요.
[guest]
2018-10-31 10시29분
거북이님이 잘 답변해주셨는데요. ^^

처음 Days enum 값에는 비트 별로 중복되지 않게 값을 할당했기 때문에 누적 합과 비트 OR 합이 동일합니다. "Days workingDays = Days.Monday | Days.Tuesday | Days.Wednesday | Days.Thursday | Days.Friday;" 코드에서 "+"가 아닌 "|" OR 연산자가 사용된 것에 주목하시면 됩니다. 따라서 40으로 바꿨다면 비트가 중복되는 것이 나오므로 70이 안 된 것입니다.
정성태
2018-10-31 11시51분
[꾸엉] 아.. 제가 배운 부분 전에 다루지 않은 내용이라
비트 연산자인지 몰랐습니다. ㅎㅎ 뒤에 나오는 비트 연산자 보면서 다시 봐야겠군요 감사합니다!!
[guest]

... [16]  17  18  19  20  21  22  23  24  25  26  27  28  29  30  ...
NoWriterDateCnt.TitleFile(s)
5539초초초촙8/9/20214815c# textbox 입력값이 다름 [1]파일 다운로드1
5538VS8/7/20215079vsmacros 확장자 파일을 사용하는 방법을 알 수 있을까요? [2]
5537민성8/6/20215308안녕하세요 WPF에서 이미 있는창이 있다면 안띠우게 하는 방법 [1]
55358/5/20216838안녕하세요. 초보 웹 개발자입니다. [10]파일 다운로드2
5534하영7/28/20215357clrprofiler 를 사용하여 세션정보 접근 [6]파일 다운로드1
5533함준혁7/20/20214855.net fpspread 관련 질문입니다.. [1]
5532조윤상7/15/20216211바인딩은 성공 했습니다. 그런데 브라우저에서 인증서가 없다고 나옵니다. [2]
5530ocm7/14/20215824pthread_create [7]파일 다운로드1
5529ksc7/13/20214991Source Generator 관련 질문이 있습니다. [1]
5528초심으로7/9/20216161MDI 에서 USB 연결해제 알림이 안되는 문제 질문 드려봅니다. [7]파일 다운로드1
5527wuny7/7/20215074제어관련 고민을하다가 소캣방식 선택 [2]
5526이성열 donator7/7/20216649wpf x64로 만든 메인 프로그램에서 dll로 된 UserControl 속성이 디자인타임에 잘 안보이는 문제 [10]파일 다운로드2
5525Wuny7/7/20217211제가 만든 배포파일은 window에서 막는걸까요? [2]파일 다운로드1
5524하이스컬7/2/20216505특정 이벤트에서 다른 이벤트 호출 관련 문의 [3]
5523민우7/1/202112250도커 사용시 윈도우 이미지 생성도 가능한가요? [2]
5522질문6/28/20216934WPF에서 splash screen이 나타나는 위치를 변경할 수 있나요? [3]
5521김민혁6/24/20217030.exe 파일 에러에 관한 질문 입니다. [3]
5520한예지 donator6/21/20216801랜덤함수 질문있습니다!! [2]
5519리얼킴6/19/20215752.net framwork 4.0 에서 4.8로 꼭 가야할까요?? [1]
5518한예지 donator6/18/20216465ArrayList, IList에 대해 질문 있습니다. [3]
5517wunsy6/18/20216896winform에서 Button 활성화, 비활성화 [4]
5516ocm6/15/20215897mips 어셈블리 연산 다시 질문드려요 (첨부파일 갱신됨) [2]파일 다운로드1
5515ocm6/14/20216783mips 어셈블리 연산 [6]파일 다운로드1
5514jongs6/11/20217499GethashCode와 String대한 질문 [2]
5513labe...6/11/20217225C# Winform 에서 Label에 동일한 Color를 넣었을 때 처리방법이 궁금합니다. [2]
55126/11/20218004xlwings 가 실행조차 되지 않습니다. ㅠㅠ [7]
... [16]  17  18  19  20  21  22  23  24  25  26  27  28  29  30  ...