Turbo-C
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
터보-C 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
Lua 게시판
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C/C++ Q/A
[5401] Re:Re:Left Shift문제...
기타솔로 [] 1772 읽음    2005-10-20 01:07
제가 프로그래밍 실력이 모자라서... ^^;
그러나 해결방법은 찾았습니다.
간단하더군요...
문제는 교재의 소스는 터보 C위주로 작성된 것인데, 저는 윈도우용인 dev c++을 썼다는 겁니다...
터보C에서 int는 2 바이트인데, dev c++이나 VC++은 int가 4 바이트이기 때문이죠...
휴~ 어렵다...
터보 C쓸려고 turbo c ++ 3.1받았는데, 컴파일이 안되서 dev c++쓰는데 이런 혼동이 발상하네요...


떡대.. 님이 쓰신 글 :
: 아래와 같이... rotate 함수를 급조해서..돌리시면 되겠죠?
:
: #include<stdio.h>
:
: void hexDisplay(int value, int maxDigit)
: {
:     printf("0x%0*x\n", maxDigit, value);
: }
:
: void rotate(int *value, int maxDigit)
: {
:     int nibbleMask = 0xf;
:     int rotateByte = 0;
:     int digitMask = 0xf;
:     int i;
:    
:     *value = *value << 4;
:     nibbleMask = nibbleMask << (4 * maxDigit);
:
:     for(i = 0; i < (maxDigit - 1) * 4; i++)
:         digitMask = (digitMask << 1) | 0x01;
:    
:     rotateByte = (*value & nibbleMask) >> (4 * maxDigit);
:     *value = (digitMask & *value) | rotateByte;
: }
:
:  int main()
:  {
:      int a, i;
:      a = 0x1234;
:    
:     printf("digit size : 4\n");
:     printf("0x%04x rotate\n\n", a);
:
:     for(i = 0; i < 4; i++)
:     {
:         rotate(&a, 4);
:         hexDisplay(a, 4);
:     }
:
:     printf("\ndigit size : 5\n");
:     printf("0x%05x rotate\n\n", a);
:
:     for(i = 0; i < 4; i++)
:     {
:         rotate(&a, 5);
:         hexDisplay(a, 5);
:     }
:
:     return 0;
:  }
:
: 기타솔로 님이 쓰신 글 :
: : 아주 기초적인 프로그램을 짜다가 책과 실행결과가 틀려서 문의드립니다.
: : 간단한 left shift와 righ shift문제인데, right shift는 문제가 없으나 left shift는 자리수때문에 원하는 결과를 얻지 못하고 있습니다.
: : 예를 들어 16진수 0X1234가 있는데 4비트 left shift한 결과(2340)와 4비트 right shift(0123)한 결과를 얻고 싶다고 가정하면,
: : right shift는 0123으로 정확히 나오나 left shift를 하면 12340으로 나옵니다.
: : 제 생각에는 변수의 크기 문제로 생각되는데 어떻게 하면 간단히 원하는 결과를 얻을 수 있을까요?
: :
: : dev c++이며, 소스는...
: : -------------------------------------------
: : #include<stdio.h>
: : int main()
: : {
: :     int a, result;
: :     a = 0X1234;
: :    
: :     result = a << 4;
: :     printf("\n %04X", result);
: :     result = a >> 4;
: :     printf("\n %04X", result);
: :     printf("\n\n");
: : }
: : --------------------------------------------

+ -

관련 글 리스트
5398 Left Shift문제... 기타솔로 2007 2005/10/19
5401         Re:Re:Left Shift문제... 기타솔로 1772 2005/10/20
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.