좋은질문

C언어 32비트 이상 숫자 연산 질문 !!

JustineBaek 2014. 9. 23. 09:50

 

 

 

2^32보다 큰 수를 long long 형의 변수로 입력을 받았더라도
사칙연산은 long long이 아닌 32비트 int형 두개로 변형하여
프로그램하여야 함.

 

여기에서 사칙연산은 long long이 아닌 32비트 int형 두개로 변형하여 해야한다는 말이

 

무슨 뜻이면 예시좀 소스로 들어주세요 부탁드립니다 !!

 

 

 

 

 

안녕하세요?


//********************************************************************
// 자료형별 사이즈와 경계값
//********************************************************************


// 2^31 --> -2,147,483,648 ~ 2,147,483,647
int singedInt = 2147483647;
printf("singedInt = %d \n", singedInt);
printf("singedInt = %d \n", singedInt + 1);   // -2,147,483,648

 

// 2^32 --> 0 ~ 4,294,967,295 (약42억)
unsigned int unsignedInt = 4294967295;
printf("unsingedInt = %u \n", unsignedInt);
printf("unsingedInt = %u \n", unsignedInt + 1);  // 0

 

// - 9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
// - 9.22337E+18                      ~ 9.22337E+18

long long int signedLongLongInt = 9223372036854775807; 
printf("signedLongLongInt : %I64d \n", signedLongLongInt);   // %I64d의 'I'는 'i'의 대문자

 

// 0 ~ 18,446,744,073,709,551,615
// 0 ~ 1.84467E+19

unsigned long long int unsignedLongLongInt = 18446744073709551615
printf("signedLongLongInt : %I64u \n", unsignedLongLongInt);  // %I64u의 'I'는 'i'의 대문자



//********************************************************************
// (signed) int로 형변환
//********************************************************************

long long int big1, big2;


big1 = 1000000000;                       // 10억
printf("big1 = %I64d \n", big1);

 

big2 = 1000000000;                       // 10억
printf("big2 = %I64d \n", big2);

 

int intResult = (int)big1 + (int)big2;     // 20억
printf("int result = %d \n", intResult);



//********************************************************************
// unsigned int로 형변환
//********************************************************************

big1 = 2000000000;                     // 20억
printf("big1 = %I64d \n", big1);

 

big2 = 2000000000;                     // 20억
printf("big2 = %I64d \n", big2);

 

unsigned int unsignedIntResult = (unsigned int)big1 + (unsigned int)big2;   // 40억
printf("int result = %u \n", unsignedIntResult);




도움이 되시길 바랍니다.

감사합니다.

 

 

 

written by

  

legend

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

C과외/C#과외/VB과외 프로그래밍 과외.서울인천경기-방문강의.기타전국-화상강의.제대로 체계적으로 배우고싶은분들.15년경력 프리랜서.삼성/포스코/한진 등.

서울,인천,경기,분당,일산,과천,산본,부천,부평,평촌,안산,안양,광명,용인,시흥,성남,수원,평택,오산,화성,동탄,천안,아산,

c#프로그래밍1:1과외, 15년 이상 프로젝트 경력의 프리랜서 직접 강의,

c#프로그래밍 과외, c#프로그래밍교육, IT·컴퓨터·컴퓨터과외비·프로그래밍과외, c# 강좌, c# 프로그래밍,

데이터베이스, 데이터베이스 프로그래밍, db, DB, 과외비,컴퓨터1:1,컴퓨터개인지도,컴퓨터실무과외,컴퓨터과외,컴퓨터1:1과외,

서울,인천,경기,부천,안산,분당,일산,천안,과천,산본,안양,광명,평촌,수원,평택,오산,용인,부평,시흥,성남,화성,동탄

광주,부산,대구,대전,마산,창원,울산,전주,군산,원주,강릉,충청남도,충청북도,강원도,경상남도,경상북도,전라남도,전라북도,제주도