본문 바로가기

JAVA/Study

4. 진법 표현방식 - binary , octal , decimal , hexadecimal

public static void main(String[] args) {
//정수 기억 : byte, char, short, int, long
//실수 기억 : float , double
//논리 : boolean


int su1 =1004;  //10진수
int su2 = 0b1101;  //진수 (0b로 시작)
int su3 = 01004;  //8진수 (0으로 시작)
int su4 = 0x1004; //16진수 (0x로 시작)
System.out.println("su1="+su1);
System.out.println("su2="+su2);
System.out.println("su3="+su3);
System.out.println("su4="+su4);
int su116=0x3EC;
System.out.println("su16="+su116);

 

//println으로 그냥 출력시키면 10진수값으로 출력시킨다

//2진수 1101이 13이 나올수있는 계산법은

//64 32 16 8 4 2 1 (일단위에 이렇게 2의 제곱 숫자를 써놓고)

// 0   0   0  1 1 0 1  (아랫쪽에 바꾸고싶은 2진수를 써놓는다)

//위에 있는것을 그대로 대입하여 더하면  8+4+1=13이 된다

 

//8진수 계산법은

//쓸라했으나 시간상 부족하기도 하고

//계산기를 쓰길바란다

//큰 수를 계산하는데 있어서 수기로 계산하고있을수는 없지만

//재미로라도 알아두면 좋을거같아 쓸라했지만 다음에 쓸기회가 온다면 그때쓰기로한다 (16진수도 마찬가지)

 

//20230328

부족한부분 채워넣다가 발견해서 씀

8진수 계산법은 0한자리가 늘어날때마다 각 자리수에 8의 제곱을 곱해주면되는데

예를들어 10의자리 36이 있으면

 8^1(=8) * 3 + 8^0 (=1) * 6 

   24             +   6                 = 30

 

100의자리 324가 있으면

8^2(=64) * 3 + 8^1 (=8) *  2+ 8^0 (=1) * 4

 192            +       16            +        4        =  212

 

1000의자리 6654가 있으면

8^3(=512) * 6  +  8^2(=64) * 6 + 8^1(=8)*5 + 8^0(=1)*4

3072               +         384        +       40       +        4     = 3500

 

아마 수학 배운사람들은 더 쉬운방법 알고있을테지만

내가 생각해낸 방법은 이게 끝이다 이와 같은방법으로 16진수 32진수 128진수 다 계산가능하다

ex) 16진수 25 >>> 16^1(=16) * 2 + 16^0(=1) *5 = 37

16진수 890 >>> 16^2(=256) * 8  + 16^1 * 9 + 0 = 2192

 

암튼 계산기쓰자 계산기가짱이다 

 

 

 

}

}

 

출력값:

su1=1004
su2=13
su3=516
su4=4100
su16=1004