인생마린
어떤 공부 블로거의 금서목록
인생마린
전체 방문자
오늘
어제
  • 전체 (155)
    • C언어 (19)
    • Python (14)
      • Flask (0)
    • Coding Challenge (11)
      • Code Clone & Review (0)
      • Toy Project (0)
      • 오늘의 코드 (5)
    • Algorithm (6)
    • JAVA (8)
    • 웹 (8)
      • Javascript (3)
    • 정보보안 (19)
    • 기타 (21)
    • 일기는일기장에 (2)
    • 리눅스 (4)
    • 철학 (1)
    • 주식 (14)
    • AI (2)
    • 독후감 (13)
    • 프로그래밍 (4)
    • 게임 (1)
    • Devops (2)
      • CI_CD (2)
      • AWS (0)
    • Flutter (3)

블로그 메뉴

  • 홈
  • 태그
  • 미디어로그
  • 위치로그
  • 방명록

공지사항

인기 글

태그

  • 테라
  • 해커톤
  • 비트코인
  • 퀴즈봇
  • 정규표현식
  • smtplib
  • Regular Expression
  • 주식 #배당주
  • 주식 #ETF
  • 폭락
  • Sphinx
  • 주린이 #주식
  • 백테스팅
  • Java
  • 코인
  • best of best
  • python #eval #dictionary
  • flask
  • 불편한사회
  • Regex
  • TFT
  • 가상화폐
  • 우영우 #패러디논란
  • turtle
  • c언어
  • 카카오톡봇
  • Bitcoin
  • Flutter
  • vpn
  • Python

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
인생마린

어떤 공부 블로거의 금서목록

dartpad에서 bitwise not, 비트연산자 not 동작이 이상한이유
Flutter

dartpad에서 bitwise not, 비트연산자 not 동작이 이상한이유

2022. 10. 26. 14:22
반응형

 

??? 분명 not 연산자는 ~x = -x - 1 즉 -6이라는 결과이어야 하는데 42억이라는 이상한 결과를 뱉는다

도저히 저 숫자가 나오는 원인을 알수가 없었다

그래서 구글링을 통해 유튜브 댓글로 원인을 알게되는데..

원래 다트에서 int 자료형은 64비트이다. 그런데 dartpad에서 dart코드를 js코드로 전환하며 32비트 자료형으로 not연산을 진행하는데, dart에서 int는 64비트이므로 출력할때 64비트로 출력한다.

 

고로 1010 5라는값이 16진수로 표현하면

0x0000 0005(32비트)

이걸 뒤집으면

0xFFFF FFFA(32비트)

맨앞에 비트가 양수인지 음수인지 판단을 하므로 이걸 그대로 출력하면 -6이 된다

but 이 결과값을 64비트로 출력하면?

0x0000 0000 FFFF FFFA(64비트)

맨앞에 비트가 0이되며 양수가 되버린다

해당 결과를 보면 정확히 0101을 잘 반전한걸 알 수 있다.

비트연산 동작에는 문제가 없었지만 자료형의 크기차이로 생긴 버그였다.

DartPad가 아닌 Dart나 Flutter에서는 실제로 잘 동작한다.

 
 
반응형
저작자표시 비영리 (새창열림)

'Flutter' 카테고리의 다른 글

flutter MaterialApp을 활용하여 앱 요소 설정하기  (0) 2022.10.26
flutter "Could not start Dart VM service HTTP server" 에러 해결  (0) 2022.10.21
    'Flutter' 카테고리의 다른 글
    • flutter MaterialApp을 활용하여 앱 요소 설정하기
    • flutter "Could not start Dart VM service HTTP server" 에러 해결
    인생마린
    인생마린
    즐거운 프로그래밍~♬

    티스토리툴바