기본 콘텐츠로 건너뛰기

[C/C++[ shift 연산 음수로 이용하기

x = k >> -e // 이건 뭐 어쩌자는 건지?

c++ 소스 중에  오늘 위와 같은 형식의 shift 연산을 보고 결과가 궁금해서 테스트를 해봤다.
결론은 shift 연산자 우측에 음수가 오면 무조건 0
즉 -e 이렇게 쓴것은 e 의 값이 음수라는 이야기 이다.

#include "stdafx.h"

template<typename T>
void test_minus_shift(T value)
{
//T value = 1;
T nShfitLeft = value << 1;
T nShfitLeftMinus = value << -1;
T nShfitRight = value >> 1;
T nShfitRightMinus = value >> -1;
}

int _tmain(int argc, _TCHAR* argv[])
{
test_minus_shift<int>(1); // nShfitLeft=2, nShfitLeftMinus=-21474836, nShfitRight=0, nShfitRightMinus=0
test_minus_shift<int>(8); // nShfitLeft=16, nShfitLeftMinus=0, nShfitRight=4, nShfitRightMinus=0
test_minus_shift<int>(0xfc31); // nShfitLeft=129122, nShfitLeftMinus=-21474836, nShfitRight=32280, nShfitRightMinus=0

test_minus_shift<unsigned>(1); // nShfitLeft=2, nShfitLeftMinus=21474836, nShfitRight=0, nShfitRightMinus=0
test_minus_shift<unsigned>(8); // nShfitLeft=16, nShfitLeftMinus=0, nShfitRight=4, nShfitRightMinus=0
test_minus_shift<unsigned>(0xfc31); // nShfitLeft=129122, nShfitLeftMinus=21474836, nShfitRight=32280, nShfitRightMinus=0
return 0;
}

댓글

  1. 예전 embedded 시스템에서 사용하는 gcc 에서는 음수 시프트가 있습니다...

    그렇게만 아시면 나중에 뭐지.. 하실꺼에요 ㅎㅎ

    답글삭제
    답글
    1. 답글이 늦었지만, 그런것도 있군요... 좀 더 찾아봐야겠어요... 감사

      삭제

댓글 쓰기

이 블로그의 인기 게시물

[c#.net] WPF 사용 중 xaml관련 실행시 오류 와 대처 방법

wpf 사용 중 xaml관련 실행시 오류 가 발생해서 자그마치 2일을 소비 했다..--;; 오류 내용은 아래와 같다. ================================== 'System.Windows.Markup.XamlParseException' 형식의 첫째 예외가 PresentationFrameWork.dll에서 발생했습니다. 추가 정보: '지정된 바인딩 제약 조건과 일치하는 'PapaZone.MainWindow' 형식에 대한 생성자 호출에서 예외가 throw 되었습니다.' 줄 번호 '21' 및 줄 위치 '9' 이 예외에 대한 처리기가 있으면 프로그램을 안전하게 계속할 수 있습니다. [] 이 예외 형식이 throw되면 중단 ================================== 위 Xaml 오류 메세지만으로는 내용 추적 불가하여, 도대체 뭔가 했다. 검색해도 뚜렷한 답변은 없었지만, 여러가지 의견을 종합해 보면 아래와 같다. 1. xmlns 관련 파일 과 관련된 파일 로딩 실패 이거나, 2. 신규로 추가된 namespace 에 속한 태그 사용시 오류로 판단되어 태그 하나씩 삽입하며 테스트 해봐야 한다고 함. 해결한 지금에 원인을 보면, xaml 에서 clr-namespace 로 추가된 항목들이 로딩에 실패해서 발생한 것이며, 추가된 항목은 있었으나, 이것과 연결된 파일이 없어서 로딩되지 않는 것이 문제였다. 오늘도 즐거운 하루~~

[MSSQL] SQL Server 에 원격 접속을 못하는 경우 조치 방법

[MSSQL] SQL Server 에 원격 접속을 못하는 경우 조치 방법 내부 오류 추적 결과 다음과 같이 나옴. [Microsoft][ODBC Driver 13 for SQL Server]TCP Provider: 대상 컴퓨터에서 연결을 거부했으므로 연결하지 못했습니다. SqlState : 08001, NativeError : 10061 오류 원인과 처리 1.SQL 서버 로그인 계정 틀린 경우 -> A.SQL Managerment Studio에서 사용할 DB 접속 '로그인' 사용할 계정의 아이디/암호 확인 2.TCP/IP 접속 권한이 없는 경우 -> A.SQL Server 구성 관리자를 실행에서 TCP/IP 허용 되어 있는지 확인 B. 서비스 포트 값이 (보통 1433) 맞는지 확인 C. 외부에서 접속하는 경우에는 방화벽 허용 되엉 있는지 확인 C. 서비스 재시작 3.Windows 인증 모드만 허용 인 경우 -> A.SQL Managerment Studio에서 사용할 DB 접속하고, 우클릭 하여 속성 정보 확인해서 B.연결에서 인증모드 '로그인' 사용할 계정의 아이디/암호 확인 4.'exec Sp_ReadErrorLog' 명령어를 사용해서, 로그인 실패 로그를 확인해서 원인을 분석한다.

[링크] [Python] Kivy 한글 예제

링크:  http://www.complexity.co.kr/?p=443 폰트 복사를 하고, 폰트 경로를 지정해 줘야 한글 출력이 됨... 나는 kivy를 아래의 폴더처럼 구성이 되어 있다. \Kivy-1.9.0-py2.7-win32-x64 윈도우 시스템 폴더의 한글 폰트를 가져다 아래의 폴더에 복사하면 된다 \Kivy-1.9.0-py2.7-win32-x64\kivy27\kivy\data\fonts 난 네이버 나눔 고딕이 좋아보여서 나눔 고딕 폰트('NanumGothic.ttf')를 복사 했음 아래는 실행한 결과, 그리고, 아래는 kivy 이용한 한글 Hello World 코드 # coding: utf-8 from   kivy . app   import   App from   kivy . uix . button   import   Button   import   os class   TestApp ( App ): def   build ( self ): fontName = '/' . join ([ os . getenv ( 'SystemRoot' ), '/fonts/NanumGothic.ttf' ]) return   Button ( text = 'Hello World\n안녕?' , font_name = fontName ) TestApp (). run ()