<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>주인장의 프로그래밍 개발 공부방</title>
    <link>https://colossus-java-practice.tistory.com/</link>
    <description>주인장의 지식이 미천하여 프로그래밍 개발 공부 복기용으로 쓰는 곳</description>
    <language>ko</language>
    <pubDate>Thu, 27 Aug 2026 10:09:45 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>거신</managingEditor>
    <image>
      <title>주인장의 프로그래밍 개발 공부방</title>
      <url>https://tistory1.daumcdn.net/tistory/3118290/attach/b98bc779ffce4156a3e760a28861117b</url>
      <link>https://colossus-java-practice.tistory.com</link>
    </image>
    <item>
      <title>여기를 찾아와 주시는 분들께</title>
      <link>https://colossus-java-practice.tistory.com/61</link>
      <description>&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;본업에 바빠서 블로그에 전혀 신경을 쓰지 못하고 있었는데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;부족한 글을 읽어주시면서 다음 글을 기다리고 있다는 댓글을 보고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;다시 키보드를 누르게 되었습니다&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;일에 치이고 바빠서 다른 곳에 신경 쓸 겨를이 없었는데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이제는 좀 여유가 생기기 시작했고 다음 글을 기다리고 있다는 말이 계속 마음에 걸려&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;여전히 부족한 지식이지만 누군가에게 도움이 되었으면 좋겠다는 생각으로&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;글을 쓰고 있습니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;본업이 개발자이긴 하나 누군가를 가르치고 하는 사람은 아니기에&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;지식을 전달하는 능력이 많이 부족한 것도 사실입니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;제 스스로도 명확하지 않거나 부족한 부분은 다시 공부하고 채워넣고 정리를 하면서&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;글을 쓰기 때문에 한 편을 작성할 때 시간이 많이 걸리기도 합니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그럼에도 가능한&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;잘못되거나 왜곡된 내용없이 정확한 정보만 전달하고,&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;애매모호한 부분은 명확하게,&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;프로그래밍 공부를 하는 사람이라면&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;누가 읽더라도 이해하기 쉽도록&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;작성하는 걸 모토로 글을 쓰고 있습니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;모든 댓글에 일일이 답변을 달아드리진 못하지만&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;항상 부족한 글을 읽어주시는 분들께도 감사하고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;거기에 댓글까지 적어주시는 분들께도 감사드립니다.&lt;/p&gt;</description>
      <category>잡동사니</category>
      <author>거신</author>
      <guid isPermaLink="true">https://colossus-java-practice.tistory.com/61</guid>
      <comments>https://colossus-java-practice.tistory.com/61#entry61comment</comments>
      <pubDate>Thu, 18 May 2023 02:11:55 +0900</pubDate>
    </item>
    <item>
      <title>[자바 프로그래밍 기본] 3. 클래스의 구성 (2) 멤버 변수의 초기화</title>
      <link>https://colossus-java-practice.tistory.com/60</link>
      <description>&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;지난 시간에 클래스의 구성요소인 멤버에 대해서 알아봤다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그렇다면 이제 멤버를 사용하는 방법에 대해서 알아봐야 할텐데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;하지만 그 전에 중요한 과정이 하나 기다리고 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;바로 멤버 변수의 초기화다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이전에 프로그래밍 기본 지식 과정의 첫 번째 챕터에서 다뤘던 변수에서&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;변수의 기본 값과 초기화에 대해서 간단히 알아본 적이 있었다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간은 그 내용의 연장선으로서 클래스의 멤버 변수의 초기화에 대해서 자세히 알아보고자 한다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;변수의 기본값과 초기화 내용은 아래에서 확인할 수 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://colossus-java-practice.tistory.com/5&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://colossus-java-practice.tistory.com/5&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1683906125377&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[Chapter 1 변수] 5. 변수의 기본 값과 초기화&quot; data-og-description=&quot;지난 시간까지 변수가 무엇인지와 변수타입의 종류, 변수를 선언하는 방법 등을 알아봤다. 이번에는 변수의 기본 값과 초기화를 하는 방법에 대해서 알아보자. 목표 : 변수 각 타입의 기본 값이 &quot; data-og-host=&quot;colossus-java-practice.tistory.com&quot; data-og-source-url=&quot;https://colossus-java-practice.tistory.com/5&quot; data-og-url=&quot;https://colossus-java-practice.tistory.com/5&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bvodXa/hySBCEBPrQ/tcKzaCNueE1Ak9EdalPDZk/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/bashin/hySAmJ84xX/2GnQLeDyshSF5KGRsejvlk/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/bVGxGU/hySBHsoeic/8EpGc8Z0bLJORHroSYBBi1/img.jpg?width=632&amp;amp;height=897&amp;amp;face=0_0_632_897&quot;&gt;&lt;a href=&quot;https://colossus-java-practice.tistory.com/5&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://colossus-java-practice.tistory.com/5&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bvodXa/hySBCEBPrQ/tcKzaCNueE1Ak9EdalPDZk/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/bashin/hySAmJ84xX/2GnQLeDyshSF5KGRsejvlk/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/bVGxGU/hySBHsoeic/8EpGc8Z0bLJORHroSYBBi1/img.jpg?width=632&amp;amp;height=897&amp;amp;face=0_0_632_897');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[Chapter 1 변수] 5. 변수의 기본 값과 초기화&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;지난 시간까지 변수가 무엇인지와 변수타입의 종류, 변수를 선언하는 방법 등을 알아봤다. 이번에는 변수의 기본 값과 초기화를 하는 방법에 대해서 알아보자. 목표 : 변수 각 타입의 기본 값이&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;colossus-java-practice.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. 멤버 변수의 초기화&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이 글을 읽고 있는 사람이라면 프로그래밍에서 &lt;span style=&quot;color: #8a3db6;&quot;&gt;&lt;b&gt;초기화&lt;/b&gt;&lt;/span&gt;가 무슨 의미인지&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;다들 알고 있을 것이라고 생각한다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;간단하게 설명하자면&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;b&gt;&lt;span style=&quot;color: #6164c6;&quot;&gt;변수를 선언하고 그 변수에 값을 저장하는 것&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;을 &lt;b&gt;&lt;span style=&quot;color: #8a3db6;&quot;&gt;초기화&lt;/span&gt;&lt;/b&gt;라고 한다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #8a3db6;&quot;&gt;&lt;b&gt;멤버 변수의 초기화&lt;/b&gt;&lt;/span&gt;도 마찬가지로 동일한 의미를 가지고 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;span style=&quot;color: #409d00;&quot;&gt;&lt;b&gt;멤버 변수를 선언하고 그 멤버 변수에 값을 저장하는 것&lt;/b&gt;&lt;/span&gt;&lt;/i&gt;이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그런데 일반적인 변수의 초기화와 멤버 변수의 초기화는 조금 차이점이 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;변수의 초기화 내용에서 &lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;전역 변수&lt;/span&gt;&lt;/b&gt;와 &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;지역 변수&lt;/b&gt;&lt;/span&gt;에 따라서&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;초기화를 해도 되고 하지 않아도 된다고 한 적이 있었다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그것이 바로 오늘 알아보는 &lt;span style=&quot;color: #8a3db6;&quot;&gt;&lt;b&gt;멤버 변수의 초기화&lt;/b&gt;&lt;/span&gt;인 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;멤버 변수는 클래스 안에서 선언된 변수, 즉, &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;전역 변수&lt;/b&gt;&lt;/span&gt;를 말하는데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;i&gt;전역 변수는 선언하고 초기화를 하지 않아도 문제가 발생하지 않는다.&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;멤버 변수는 선언함과 동시에 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;자동으로 변수의 타입에 맞는 기본값으로 초기화&lt;/b&gt;&lt;/span&gt;가 된다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;b&gt;예시 1)&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1683907926068&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class SampleClass {
    int x;
    
    void sampleMethod() {
    	int i;
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;간단한 소스코드를 작성해 보았다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;너무나도 잘 알고 있듯이 변수 x는 &lt;span style=&quot;color: #8a3db6;&quot;&gt;&lt;b&gt;클래스의 멤버 변수&lt;/b&gt;&lt;/span&gt;로 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;전역 변수&lt;/b&gt;&lt;/span&gt;이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;변수 i는 &lt;span style=&quot;color: #009a87;&quot;&gt;&lt;b&gt;메소드&lt;/b&gt;&lt;/span&gt; 안에서 선언된 &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;지역 변수&lt;/b&gt;&lt;/span&gt;이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;위의 소스코드는 오류가 발생하는데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;바로 &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;지역 변수&lt;/b&gt;&lt;/span&gt;인 &lt;b&gt;i&lt;/b&gt;를 초기화하지 않았기 때문이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;하지만 변수 x는 초기화하지 않았다고 해서 문제가 발생하지 않는다.&lt;/i&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이는 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;클래스가 생성되면서 클래스의 멤버 변수인 x에 자동으로 0으로 초기화&lt;/b&gt;&lt;/span&gt;가 되기 때문이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이와 같이 &lt;span style=&quot;color: #8a3db6;&quot;&gt;&lt;b&gt;멤버 변수&lt;/b&gt;&lt;/span&gt;는 굳이 직접적으로 초기화를 하지 않더라도&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;알아서 초기화를 해주기 때문에 문제가 발생하지 않는다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;i&gt;&quot;하지만 의도하지 않은 값을 방지하기 위해서 가능하면&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;i&gt;멤버 변수라도 직접 초기화를 해주는 것을 권장하는 편이다.&quot;&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2. &lt;span style=&quot;color: #000000;&quot;&gt;멤버 변수의 초기화&lt;/span&gt; 방법&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그런데 &lt;span style=&quot;color: #8a3db6;&quot;&gt;&lt;b&gt;멤버 변수&lt;/b&gt;&lt;/span&gt;는 &lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;지역 변수&lt;/span&gt;&lt;/b&gt;와 다르게 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;초기화를 하는 방법이 여러가지 존재한다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #8a3db6;&quot;&gt;멤버 변수를 초기화&lt;/span&gt;&lt;/b&gt;하는 방법에는 3가지가 있는데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #953b34;&quot;&gt;&lt;b&gt;명시적 초기화&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #5f6d2b;&quot;&gt;&lt;b&gt;초기화 블럭을 이용한 초기화&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;생성자를 통한 초기화&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;로 3가지가 존재하는데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;우리는 여기에서 &lt;b&gt;&lt;span style=&quot;color: #781b33;&quot;&gt;명시적 초기화&lt;/span&gt;&lt;/b&gt;와&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #5f6d2b;&quot;&gt;초기화 블럭을 이용한 초기화&lt;/span&gt;&lt;/b&gt; 방법에 대해서 자세히 알아볼 것이고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;&lt;b&gt;생성자를 통한 초기화&lt;/b&gt;&lt;/span&gt; 방법은 간단히 형태만 알아보고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;다음 내용인 &lt;span style=&quot;color: #f89009;&quot;&gt;&lt;b&gt;생성자&lt;/b&gt;&lt;/span&gt;에서 더 자세하게 다뤄보도록 하자.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;먼저 &lt;span style=&quot;color: #781b33;&quot;&gt;&lt;b&gt;명시적 초기화&lt;/b&gt;&lt;/span&gt;는 &lt;i&gt;&lt;b&gt;우리가 흔히 알고 있는 변수의 초기화 방법,&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;b&gt;가장 기본적으로 알고 있는 초기화 방법&lt;/b&gt;&lt;/i&gt;이기도 하다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #781b33;&quot;&gt;&lt;b&gt;변수를 선언하고 초기 값을 넣는 것&lt;/b&gt;&lt;/span&gt;을 &lt;span style=&quot;color: #781b33;&quot;&gt;&lt;b&gt;명시적 초기화&lt;/b&gt;&lt;/span&gt;라고 한다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;b&gt;예시 2)&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1683910083232&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class 볼펜심_설계도 {
    String 볼펜촉_모양 = new String();
    int 볼펜심_둘레 = 10;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;b&gt;예시 2)&lt;/b&gt;&lt;/i&gt; 와 같이 우리가 흔히 알고 있는 초기화 방법이 &lt;span style=&quot;color: #781b33;&quot;&gt;&lt;b&gt;명시적 초기화&lt;/b&gt;&lt;/span&gt;인 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;i&gt;가장 직관적이고 기본적인 초기화 방법&lt;/i&gt;&lt;/b&gt;이지만&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;기본적인 만큼 단순하게 값을 넣는 것만 되는 방법이기 때문에&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;좀 더 복잡한 초기화 방법이 필요한 경우에는 적합하지 않다는 부분도 있다.&lt;/b&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;다음은 &lt;span style=&quot;color: #5f6d2b;&quot;&gt;&lt;b&gt;초기화 블럭을 이용한 초기화&lt;/b&gt;&lt;/span&gt; 방법이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #5f6d2b;&quot;&gt;&lt;b&gt;초기화 블럭&lt;/b&gt;&lt;/span&gt;이라는 것이 다소 생소할 수도 있는데 먼저 예시로 만나보자.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;b&gt;예시 3)&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1683910683812&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class 볼펜심_설계도 {
    static int 볼펜심_길이;
    Color[] 잉크색;
    
    // 클래스 초기화 블럭
    static {
    	잉크색 = new Color[3];
        잉크색[0] = 검정색;
        잉크색[1] = 빨간색;
        잉크색[2] = 파란색;
        
        볼펜심_길이 = 40;
    }
    
    // 인스턴스 초기화 블럭
    {
    	볼펜심_길이 = 30;
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #5f6d2b;&quot;&gt;&lt;b&gt;초기화 블럭&lt;/b&gt;&lt;/span&gt;은 &lt;b&gt;{ } (중괄호)&lt;/b&gt;를 만들고 그 안에 초기화 코드를 작성하면 된다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #5f6d2b;&quot;&gt;&lt;b&gt;초기화 블럭&lt;/b&gt;&lt;/span&gt;은 &lt;span style=&quot;color: #ef5369;&quot;&gt;&lt;b&gt;클래스 초기화 블럭&lt;/b&gt;&lt;/span&gt;과 &lt;span style=&quot;color: #0593d3;&quot;&gt;&lt;b&gt;인스턴스 초기화 블럭&lt;/b&gt;&lt;/span&gt; 2종류가 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ef5369;&quot;&gt;&lt;b&gt;클래스 초기화 블럭&lt;/b&gt;&lt;/span&gt;은 이름대로 &lt;i&gt;&lt;span style=&quot;color: #ef5369;&quot;&gt;&lt;b&gt;클래스 변수를 초기화하는 블럭&lt;/b&gt;&lt;/span&gt;&lt;/i&gt;이고 &lt;b&gt;{ }&lt;/b&gt; 앞에 &lt;b&gt;static&lt;/b&gt;을 붙여주면 된다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;마찬가지로 &lt;span style=&quot;color: #0593d3;&quot;&gt;&lt;b&gt;인스턴스 초기화 블럭&lt;/b&gt;&lt;/span&gt;은 &lt;span style=&quot;color: #0593d3;&quot;&gt;&lt;b&gt;인스턴스 변수를 초기화하는 블럭&lt;/b&gt;&lt;/span&gt;이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;클래스와 인스턴스의 개념과 동일하게&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ef5369;&quot;&gt;&lt;b&gt;클래스 초기화 블럭&lt;/b&gt;&lt;/span&gt;은 &lt;i&gt;&lt;b&gt;클래스가 생성될 때 초기화 블럭이 실행이 되지만&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;&lt;b&gt;인스턴스 초기화 블럭&lt;/b&gt;&lt;/span&gt;은 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;&lt;i&gt;클래스의 인스턴스가 생성될 때 초기화 블럭이 실행된다.&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ef5369;&quot;&gt;&lt;b&gt;클래스 초기화 블럭&lt;/b&gt;&lt;/span&gt;은 이름대로 클래스 멤버의 초기화만 가능하고 호출이 가능하다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;(&lt;span style=&quot;color: #5f6d2b;&quot;&gt;&lt;b&gt;초기화 블럭&lt;/b&gt;&lt;/span&gt; 안에서는 &lt;span style=&quot;color: #009a87;&quot;&gt;&lt;b&gt;메소드&lt;/b&gt;&lt;/span&gt;도 호출할 수 있다.)&lt;/i&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;당연하게도 인스턴스 멤버의 초기화와 호출은 불가능하다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;반면 &lt;span style=&quot;color: #0593d3;&quot;&gt;&lt;b&gt;인스턴스 초기화 블럭&lt;/b&gt;&lt;/span&gt;의 경우에는 당연히 인스턴스 멤버의 초기화와 호출이 가능하고,&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;b&gt;클래스 멤버의 초기화와 호출도 가능하다.&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그런데 &lt;b&gt;&lt;i&gt;예시 3)&lt;/i&gt;&lt;/b&gt;에서 중요한 부분이 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ef5369;&quot;&gt;&lt;b&gt;클래스 초기화 블럭&lt;/b&gt;&lt;/span&gt;과 &lt;span style=&quot;color: #0593d3;&quot;&gt;&lt;b&gt;인스턴스 초기화 블럭&lt;/b&gt;&lt;/span&gt; 안에 있는&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;볼펜심_길이의 경우 &lt;span style=&quot;color: #8a3db6;&quot;&gt;&lt;i&gt;&lt;b&gt;두 번의 초기화&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;가 이루어지고 있다는 점이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #5f6d2b;&quot;&gt;&lt;b&gt;초기화 블럭&lt;/b&gt;&lt;/span&gt;이 실행되는 시점을 생각해보면&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;기본적으로 &lt;b&gt;볼펜심_길이&lt;/b&gt;는 &lt;b&gt;40&lt;/b&gt;이라는 값을 가지고 있을 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그러나 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;i&gt;&lt;b&gt;볼펜심_설계도 클래스의 인스턴스가 생성되면&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;&lt;b&gt;인스턴스 초기화 블럭이 실행&lt;/b&gt;&lt;/span&gt;되므로 &lt;b&gt;볼펜심_길이&lt;/b&gt;의 값은 &lt;b&gt;40&lt;/b&gt;에서 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;30&lt;/b&gt;&lt;/span&gt;으로 변경된다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이렇게 클래스의 인스턴스가 생성됨에 따라서 변수의 값을 변경할 수도 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;하지만 반대로 클래스의 인스턴스가 생성되지 않는다면&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;&lt;b&gt;인스턴스 초기화 블럭&lt;/b&gt;&lt;/span&gt;은 실행되지 않을테니 &lt;b&gt;볼펜심_길이&lt;/b&gt;는 항상 &lt;b&gt;40&lt;/b&gt;이라는 값을 가지고 있을 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이는 바로 뒤에서 설명할 &lt;span style=&quot;color: #a6bc00;&quot;&gt;&lt;b&gt;초기화의 순서&lt;/b&gt;&lt;/span&gt;에서 자세하게 알아보도록 하자.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;b&gt;예시 4)&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1683913851977&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class 볼펜심_설계도 {
    static int 볼펜심_길이;
    
    static {
    	볼펜심_길이 = 40;
    }
    
    {
    	볼펜심_길이 = 20;
    }
    
    public static void main(String[] args) {
    	System.out.println(볼펜심_길이);
        볼펜심_설계도 설계도 = new 볼펜심_설계도();
        System.out.println(볼펜심_길이);
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이와 관련해 재미있는 예시를 하나 보자면&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;b&gt;예시 4)&lt;/b&gt;&lt;/i&gt;와 같은 소스코드를 작성해 실행하면 콘솔에&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;40&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;20&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;으로 출력이 되는데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;클래스의 인스턴스의 생성 시점에 따라서 변수의 값이 바뀌는 것을 확인할 수 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그런데 일반적으로 &lt;span style=&quot;color: #0593d3;&quot;&gt;&lt;b&gt;인스턴스 초기화 블럭&lt;/b&gt;&lt;/span&gt;의 경우에는&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그 역할과 동작이 &lt;span style=&quot;color: #f89009;&quot;&gt;&lt;b&gt;생성자&lt;/b&gt;&lt;/span&gt;와 거의 동일하기 때문에 일반적인 초기화 방식으로는 사용되지 않고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;i&gt;&lt;b&gt;공통으로 실행되는 코드의 중복을 방지하는 방식에서 주로 사용&lt;/b&gt;&lt;/i&gt;&lt;i&gt;&lt;b&gt;된다.&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;마지막으로 &lt;span style=&quot;color: #f89009;&quot;&gt;&lt;b&gt;생성자를 이용한 초기화&lt;/b&gt;&lt;/span&gt; 방법이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;클래스&lt;/b&gt;에 대해서 공부한다면 무조건 따라오는 것이 바로 &lt;span style=&quot;color: #f89009;&quot;&gt;&lt;b&gt;생성자(Constructor)&lt;/b&gt;&lt;/span&gt;이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;하지만 우리는 &lt;b&gt;클래스&lt;/b&gt;에 대해서는 배웠지만&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;&lt;b&gt;생성자&lt;/b&gt;&lt;/span&gt;라는 것에 대해서는 아직 공부하지 못했다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그렇기 때문에 &lt;span style=&quot;color: #f89009;&quot;&gt;&lt;b&gt;생성자&lt;/b&gt;&lt;/span&gt;가 무엇인지에 대해서 자세하게 알아보는 것은 다음 시간으로 아껴두고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;지금은 간단하게 찍먹하는 정도로 설명하고자 한다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;i&gt;예시 5)&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1684075385984&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class 볼펜심_설계도 {
	볼펜심_설계도() {}
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;b&gt;예시 5)&lt;/b&gt;&lt;/i&gt;에서 클래스의 &lt;span style=&quot;color: #f89009;&quot;&gt;&lt;b&gt;생성자&lt;/b&gt;&lt;/span&gt;를 보여주고 있는데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;&lt;b&gt;생성자&lt;/b&gt;&lt;/span&gt;는 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;클래스명과 동일하고 메소드와 비슷한 모습이지만 리턴타입이 없다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;&lt;b&gt;생성자&lt;/b&gt;&lt;/span&gt;는 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;클래스의 인스턴스가 생성되어야만 실행이 되는 녀석&lt;/b&gt;&lt;/span&gt;이기 때문에&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;방금 앞에서 만났던 &lt;span style=&quot;color: #0593d3;&quot;&gt;&lt;b&gt;인스턴스 초기화 블럭&lt;/b&gt;&lt;/span&gt;과 동일한 기능을 한다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그래서 &lt;span style=&quot;color: #0593d3;&quot;&gt;&lt;b&gt;인스턴스 초기화 블럭&lt;/b&gt;&lt;/span&gt;에 대해서 설명할 때&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;&lt;b&gt;생성자&lt;/b&gt;&lt;/span&gt;와 거의 동일하기 때문에 일반적인 방식으로는 사용되지 않는다고 했던 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;b&gt;예시 6)&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1684076026930&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class 볼펜심_설계도 {
    static int 볼펜심_길이;
    Color[] 잉크색;
    
    볼펜심_설계도() {
    	볼펜심_길이 = 30;
        잉크색[0] = 검정색;
        잉크색[1] = 빨간색;
        잉크색[2] = 파란색;
    }
    
    볼펜심_설계도(int 길이) {
    	볼펜심_길이 = 길이;
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;&lt;b&gt;인스턴스 초기화 블럭&lt;/b&gt;&lt;/span&gt;의 &lt;b&gt;&lt;i&gt;예시&lt;/i&gt;&lt;/b&gt;를 수정해서&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;&lt;b&gt;생성자&lt;/b&gt;&lt;/span&gt;로 &lt;span style=&quot;color: #5f6d2b;&quot;&gt;&lt;b&gt;멤버 변수의 초기화&lt;/b&gt;&lt;/span&gt;를 한 예시이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;당연히 &lt;b&gt;static&lt;/b&gt;이 붙은 &lt;span style=&quot;color: #ef5369;&quot;&gt;&lt;b&gt;클래스 변수&lt;/b&gt;&lt;/span&gt;와 &lt;b&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;인스턴스 변수&lt;/span&gt;&lt;/b&gt; 모두 초기화가 가능하다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그리고 &lt;span style=&quot;color: #f89009;&quot;&gt;&lt;b&gt;생성자&lt;/b&gt;&lt;/span&gt;는 하나의 &lt;span style=&quot;color: #009a87;&quot;&gt;&lt;b&gt;메소드&lt;/b&gt;&lt;/span&gt;이므로 &lt;i&gt;&lt;b&gt;오버로딩&lt;/b&gt;&lt;/i&gt;이 가능해 여러 형태의 &lt;span style=&quot;color: #f89009;&quot;&gt;&lt;b&gt;생성자&lt;/b&gt;&lt;/span&gt;를 만들 수 있고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;매개변수로 값을 받아 초기화를 하는 것도 가능하다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;여기에서는 &lt;span style=&quot;color: #f89009;&quot;&gt;&lt;b&gt;생성자&lt;/b&gt;&lt;/span&gt;에 대해 자세한 설명을 하지 않고 있기 때문에&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;설명을 들으면 조금 생소한 부분도 분명히 있을 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그렇다고 해도 지금은 그냥 그런거구나 하고 넘어가고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;멤버 변수&lt;/b&gt;는 이런 식으로 초기화가 가능하고 이렇게 사용할 수 있구나라고만 이해해도&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;충분하다고 생각한다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;더 디테일한 설명들은 다음에 이어질 글에서 하나하나 등장할테니&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;너무 복잡하게 생각하지 않길 바란다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3. 각 초기화 방법들의 실행 순서&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;지금까지 알아본 3가지의 초기화 방법과 관련해서&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;각 초기화 방법의 초기화 시기와 순서에 대해서 알아보자.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;먼저 클래스가 처음 생성되는 시점에서 만들어지는 &lt;span style=&quot;color: #ef5369;&quot;&gt;&lt;b&gt;클래스 변수&lt;/b&gt;&lt;/span&gt;부터 살펴보자면&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;i&gt;그림 1)&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;클래스.png&quot; data-origin-width=&quot;1005&quot; data-origin-height=&quot;257&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/JUcJe/btsfWWnnYII/zlWB2BYOM8xa893HVRFNC0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/JUcJe/btsfWWnnYII/zlWB2BYOM8xa893HVRFNC0/img.png&quot; data-alt=&quot;클래스 변수 초기화 순서&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/JUcJe/btsfWWnnYII/zlWB2BYOM8xa893HVRFNC0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJUcJe%2FbtsfWWnnYII%2FzlWB2BYOM8xa893HVRFNC0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;153&quot; data-filename=&quot;클래스.png&quot; data-origin-width=&quot;1005&quot; data-origin-height=&quot;257&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;클래스 변수 초기화 순서&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ef5369;&quot;&gt;&lt;b&gt;클래스 변수의 초기화&lt;/b&gt;&lt;/span&gt; 순서는 &lt;i&gt;&lt;b&gt;그림 1)&lt;/b&gt;&lt;/i&gt;과 같이 실행이 된다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;가장 첫 번째는&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;변수가 선언되고 생성되면서 해당 변수의 타입의 기본값으로 초기화가 되고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #781b33;&quot;&gt;&lt;b&gt;명시적 초기화&lt;/b&gt;&lt;/span&gt;를 했을 경우 &lt;span style=&quot;color: #781b33;&quot;&gt;&lt;b&gt;명시적 초기화&lt;/b&gt;&lt;/span&gt;가 실행되고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;마지막으로 &lt;span style=&quot;color: #ef5369;&quot;&gt;&lt;b&gt;클래스 초기화 블럭&lt;/b&gt;&lt;/span&gt;이 있다면&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ef5369;&quot;&gt;&lt;b&gt;클래스 초기화 블럭&lt;/b&gt;&lt;/span&gt;의 내용으로 초기화가 실행된다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;여기에서 &lt;b&gt;&lt;span style=&quot;color: #781b33;&quot;&gt;명시적 초기화&lt;/span&gt;&lt;/b&gt;가 있더라도 기본값으로의 초기화가 실행이 되는데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이는 클래스가 처음 생성되고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;변수가 생성되는 시점에서 실행이 되기 때문에&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #781b33;&quot;&gt;&lt;b&gt;명시적 초기화&lt;/b&gt;&lt;/span&gt;가 있다고 해서 바로 &lt;span style=&quot;color: #781b33;&quot;&gt;&lt;b&gt;명시적 초기화&lt;/b&gt;&lt;/span&gt;로 실행이 되는 것이 아니라&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;일단은 기본값으로의 초기화가 실행이 된다는 점을 알고 있기를 바란다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;사실 자바의 내부 동작과 관련된 부분이라서&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그렇게 자세하게 알 필요는 없지만 그래도 알고 있다고 해서 손해볼 건 없으니까?&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;b&gt;예시 7)&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1684087558526&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class 볼펜심_설계도 {
    
//  static int 잉크양;		// 1. 변수가 선언되면 해당 타입의 기본값으로 자동 초기화
    static int 잉크양 = 100;	// 2. 명시적 초기화가 있다면 해당 값으로 초기화
    
    // 3. 이후 클래스 초기화 블럭이 있다면 초기화 블럭의 내용으로 초기화 
    static {
    	잉크양 = 200;
    }
    
    public static void main(String[] args) {
    	System.out.println(볼펜심_설계도.잉크양);
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1684337563418&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;200&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;b&gt;예시 7)&lt;/b&gt;&lt;/i&gt;과 같이 소스코드를 작성해서 실행하면&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;콘솔에 &lt;b&gt;200&lt;/b&gt;이라는 값이 출력된다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;여기에서 &lt;span style=&quot;color: #ef5369;&quot;&gt;&lt;b&gt;클래스 초기화 블럭&lt;/b&gt;&lt;/span&gt;이 없다면 결과는 &lt;b&gt;100&lt;/b&gt;으로 출력될 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;다음은 클래스의 인스턴스가 생성되는 시점에서 실행되는&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;&lt;b&gt;인스턴스 변수의 초기화&lt;/b&gt;&lt;/span&gt; 순서이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;b&gt;그림 2)&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;인스턴스.png&quot; data-origin-width=&quot;1425&quot; data-origin-height=&quot;292&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/JGK1V/btsfXen1d6D/pDVvnEHgp3yE0Vp2mTuC30/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/JGK1V/btsfXen1d6D/pDVvnEHgp3yE0Vp2mTuC30/img.png&quot; data-alt=&quot;인스턴스 변수 초기화 순서&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/JGK1V/btsfXen1d6D/pDVvnEHgp3yE0Vp2mTuC30/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJGK1V%2FbtsfXen1d6D%2FpDVvnEHgp3yE0Vp2mTuC30%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1425&quot; height=&quot;292&quot; data-filename=&quot;인스턴스.png&quot; data-origin-width=&quot;1425&quot; data-origin-height=&quot;292&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;인스턴스 변수 초기화 순서&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;&lt;b&gt;인스턴스 변수 초기화&lt;/b&gt;&lt;/span&gt;는 &lt;span style=&quot;color: #ef5369;&quot;&gt;&lt;b&gt;클래스 변수 초기화&lt;/b&gt;&lt;/span&gt;와 동일하게&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;기본값으로 초기화&lt;/b&gt;, &lt;span style=&quot;color: #5f6d2b;&quot;&gt;&lt;b&gt;명시적 초기화&lt;/b&gt;&lt;/span&gt; 후에 &lt;b&gt;초기화 블럭을 통한 초기화&lt;/b&gt;가 실행된다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그리고 &lt;span style=&quot;color: #ef5369;&quot;&gt;&lt;b&gt;클래스 변수 초기화&lt;/b&gt;&lt;/span&gt;에서는 없었던 &lt;span style=&quot;color: #f89009;&quot;&gt;&lt;b&gt;생성자에 의한 초기화&lt;/b&gt;&lt;/span&gt;가 추가되었다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;다시 말해, &lt;span style=&quot;color: #f89009;&quot;&gt;&lt;b&gt;생성자&lt;/b&gt;&lt;/span&gt;는 클래스의 &lt;b&gt;인스턴스&lt;/b&gt;가 생성되어야 동작하는 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;b&gt;예시 8)&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1684338882471&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class 볼펜심_설계도 {
    static int 잉크양 = 200;	// 1. 클래스 변수의 명시적 초기화
//  int 볼펜심_길이;		// 1. 기본값 초기화
    int 볼펜심_길이 = 40;	// 2. 명시적 초기화
    
    // 3. 인스턴스 초기화 블럭으로 초기화
    {
    	잉크양 = 300;
    	볼펜심_길이 = 60;
    }
    
    // 4-1. 생성자로 초기화
    볼펜심_설계도() {
    	볼펜심_길이 = 10;
    }
    
    // 4-2. 매개변수가 있는 생성자로 초기화
    볼펜심_설계도(int ink) {
    	잉크양 = ink;
    }
    
    public static void main(String[] args) {
    	System.out.println(&quot;2 잉크양 : &quot; + 볼펜심_설계도.잉크양);
        
        // 매개변수가 없는 생성자로 인스턴스를 생성
        볼펜심_설계도 설계도_인스턴스1 = new 볼펜심_설계도();
        System.out.println(&quot;3 잉크양 : &quot; + 볼펜심_설계도.잉크양);
        System.out.println(&quot;4-1 볼펜심_길이 : &quot; + 설계도_인스턴스1.볼펜심_길이);
        
        // 매개변수가 있는 생성자로 인스턴스를 생성
        볼펜심_설계도 설계도_인스턴스2 = new 볼펜심_설계도(100);
        System.out.println(&quot;4-2 볼펜심_길이 : &quot; + 설계도_인스턴스2.볼펜심_길이);
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1684340408363&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 클래스의 인스턴스가 생성되기 전
2 잉크양 : 200

// 클래스의 인스턴스가 생성된 후
3 잉크양 : 300
4-1 볼펜심_길이 : 10

// 매개변수를 가지고 인스턴스가 생성된 후
4-2 볼펜심_길이 : 100&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;i&gt;예시 8)&lt;/i&gt;&lt;/b&gt;의 내용이 조금 길어서 이해가 잘 되지 않을 수도 있을텐데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;위와 같이 소스코드를 작성하면 아래의 결과가 출력되는 것을 확인할 수 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ef5369;&quot;&gt;&lt;b&gt;클래스 변수 초기화&lt;/b&gt;&lt;/span&gt;의 경우에는 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;i&gt;&lt;b&gt;클래스가 생성되는 시점에서 실행&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;되기 때문에&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;순서대로 진행되더라도 &lt;b&gt;마지막에 초기화한 값으로 출력&lt;/b&gt;이 되지만&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;&lt;b&gt;인스턴스 변수 초기화&lt;/b&gt;&lt;/span&gt;의 경우에는 &lt;b&gt;클래스의 인스턴스 생성 유무 순서&lt;/b&gt;에 따라서&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;다른 값을 출력하는 경우도 발생할 수 있으니 이 부분을 잊어선 안되겠다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;마찬가지로 &lt;span style=&quot;color: #f89009;&quot;&gt;&lt;b&gt;생성자&lt;/b&gt;&lt;/span&gt;에 따라서도 달라질 수 있다는 점도 알고 있기를 바란다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;4. 마무리&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;클래스의 멤버&lt;/b&gt;에는&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #8a3db6;&quot;&gt;&lt;b&gt;멤버 변수&lt;/b&gt;&lt;/span&gt;와 &lt;span style=&quot;color: #009a87;&quot;&gt;&lt;b&gt;멤버 메소드&lt;/b&gt;&lt;/span&gt;가 있는데 그 중 &lt;span style=&quot;color: #009a87;&quot;&gt;&lt;b&gt;멤버 변수의 초기화 방법&lt;/b&gt;&lt;/span&gt;에 대해서 알아봤다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;변수는 선언을 하고 초기화를 해줘야 하는데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;변수의 초기화&lt;/b&gt;에서는 변수가 &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;지역 변수&lt;/b&gt;&lt;/span&gt;냐, &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;전역 변수&lt;/b&gt;&lt;/span&gt;냐에 따라서&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;b&gt;초기화를 해줘야 하고 해주지 않아도 되는 경우가 있다.&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #8a3db6;&quot;&gt;&lt;b&gt;멤버 변수&lt;/b&gt;&lt;/span&gt;의 경우에는 선언과 동시에 초기화를 하지 않아도&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;해당 변수의 타입에 맞는 기본값으로 자동으로 초기화&lt;/b&gt;가 된다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이렇듯 선언과 동시에 초기화를 하지 않아도 되기 때문에&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #8a3db6;&quot;&gt;&lt;b&gt;멤버 변수&lt;/b&gt;&lt;/span&gt;를 초기화하는 방법이 다양하게 존재한다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #8a3db6;&quot;&gt;&lt;b&gt;멤버 변수의 초기화 방법&lt;/b&gt;&lt;/span&gt;에는 &lt;b&gt;3가지&lt;/b&gt;가 있는데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #781b33;&quot;&gt;&lt;b&gt;명시적 초기화&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #5f6d2b;&quot;&gt;&lt;b&gt;초기화 블럭을 이용한 초기화&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;&lt;b&gt;생성자를 통한 초기화&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;가 그것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #781b33;&quot;&gt;명시적 초기화&lt;/span&gt;&lt;/b&gt;는 우리가 흔히 알고 있는 변수의 초기화 방법으로&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;int a = 10;&lt;/b&gt; 처럼 변수에 직접 값을 넣는 방법이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;직접적이면서도 간단한 방법이기 때문에 가장 기본적인 초기화 방법이지만&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;b&gt;복잡한 방식의 초기화가 불가능하다는 부분&lt;/b&gt;&lt;/i&gt;이 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이렇게 가려운 부분을 긁어줄 수 있는 것이 바로&amp;nbsp;&lt;span style=&quot;color: #5f6d2b;&quot;&gt;&lt;b&gt;초기화 블럭&lt;/b&gt;&lt;/span&gt;과 &lt;span style=&quot;color: #f89009;&quot;&gt;&lt;b&gt;생성자&lt;/b&gt;&lt;/span&gt;가 되겠다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #5f6d2b;&quot;&gt;&lt;b&gt;초기화 블럭&lt;/b&gt;&lt;/span&gt;은 클래스 안에서 &lt;b&gt;{ } (중괄호)&lt;/b&gt;를 만들어 그 안에 초기화 내용을 작성한다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #5f6d2b;&quot;&gt;&lt;b&gt;초기화 블럭&lt;/b&gt;&lt;/span&gt;은 &lt;span style=&quot;color: #ef5369;&quot;&gt;&lt;b&gt;클래스 초기화 블럭&lt;/b&gt;&lt;/span&gt;과 &lt;span style=&quot;color: #0593d3;&quot;&gt;&lt;b&gt;인스턴스 초기화 블럭&lt;/b&gt;&lt;/span&gt;으로 나뉘는데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;&lt;b&gt;인스턴스 초기화 블럭&lt;/b&gt;&lt;/span&gt;은 &lt;b&gt;{ }&lt;/b&gt;를 그대로 사용하지만&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ef5369;&quot;&gt;&lt;b&gt;클래스 초기화 블럭&lt;/b&gt;&lt;/span&gt;은 &lt;b&gt;{ }&lt;/b&gt; 앞에 &lt;b&gt;static&lt;/b&gt;을 붙여준다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ef5369;&quot;&gt;&lt;b&gt;클래스 초기화 블럭&lt;/b&gt;&lt;/span&gt;은 인스턴스 생성여부와 상관없이&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;i&gt;&lt;b&gt;클래스가 생성되는 시점에서 함께 실행이 된다.&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그렇기 때문에 &lt;span style=&quot;color: #8a3db6;&quot;&gt;&lt;b&gt;멤버 변수&lt;/b&gt;&lt;/span&gt; 중에서 &lt;b&gt;static&lt;/b&gt;이 붙은 변수의 초기화만 가능하다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;반대로 &lt;span style=&quot;color: #0593d3;&quot;&gt;&lt;b&gt;인스턴스 초기화 블럭&lt;/b&gt;&lt;/span&gt;은 이름대로 &lt;i&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;클래스의 인스턴스가 생성되는 시점에서 실행&lt;/b&gt;&lt;/span&gt;&lt;/i&gt;되며&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;변수의 &lt;b&gt;static&lt;/b&gt; 유무와 상관없이 &lt;span style=&quot;color: #8a3db6;&quot;&gt;&lt;b&gt;모든 멤버 변수의 초기화&lt;/b&gt;&lt;/span&gt;가 가능하다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;&lt;b&gt;생성자&lt;/b&gt;&lt;/span&gt;는&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;&lt;i&gt;&lt;b&gt;클래스명과 동일한 리턴타입이 없는 메소드의 형태&lt;/b&gt;&lt;/i&gt;&lt;span style=&quot;color: #000000;&quot;&gt;를&lt;/span&gt;&lt;/span&gt; 하고 있는데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;&lt;b&gt;인스턴스 초기화 블럭&lt;/b&gt;&lt;/span&gt;과 마찬가지로 &lt;i&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;클래스의 인스턴스가 생성되는 시점에 실행이 된다.&lt;/b&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;역시 &lt;span style=&quot;color: #8a3db6;&quot;&gt;&lt;b&gt;모든 멤버 변수의 초기화&lt;/b&gt;&lt;/span&gt;가 가능하고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;&lt;b&gt;생성자&lt;/b&gt;&lt;/span&gt;는 &lt;span style=&quot;color: #009a87;&quot;&gt;&lt;b&gt;메소드&lt;/b&gt;&lt;/span&gt;이기 때문에 &lt;b&gt;매개변수&lt;/b&gt;를 받을 수도 있는데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;인스턴스 생성 시 전달받은 &lt;b&gt;매개변수&lt;/b&gt;로 &lt;span style=&quot;color: #8a3db6;&quot;&gt;&lt;b&gt;멤버 변수&lt;/b&gt;&lt;/span&gt;를 초기화할 수도 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;마지막으로 &lt;i&gt;&lt;b&gt;각 초기화 방법이 실행되는 순서&lt;/b&gt;&lt;/i&gt;는&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ef5369;&quot;&gt;&lt;b&gt;클래스 변수 초기화&lt;/b&gt;&lt;/span&gt;의 경우&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. 기본값으로 초기화&lt;/b&gt; -&amp;gt; &lt;span style=&quot;color: #781b33;&quot;&gt;&lt;b&gt;2. 명시적 초기화&lt;/b&gt;&lt;/span&gt; -&amp;gt; &lt;span style=&quot;color: #5f6d2b;&quot;&gt;&lt;b&gt;3. 클래스 초기화 블럭&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;의 순서로 실행이 된다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;여기에서 &lt;span style=&quot;color: #781b33;&quot;&gt;&lt;b&gt;명시적 초기화&lt;/b&gt;&lt;/span&gt;의 경우에는 &lt;span style=&quot;color: #781b33;&quot;&gt;&lt;b&gt;명시적 초기화&lt;/b&gt;&lt;/span&gt;를 하더라도&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;일단 변수가 생성되는 시점에서 &lt;b&gt;기본값으로 초기화&lt;/b&gt;가 되고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이후 &lt;span style=&quot;color: #781b33;&quot;&gt;&lt;b&gt;명시적 초기화&lt;/b&gt;&lt;/span&gt;의 유무에 따라서 해당 값으로 초기화가 된다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;&lt;b&gt;인스턴스 변수 초기화&lt;/b&gt;&lt;/span&gt;의 경우&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. 기본값으로 초기화&lt;/b&gt; -&amp;gt; &lt;span style=&quot;color: #781b33;&quot;&gt;&lt;b&gt;2. 명시적 초기화&lt;/b&gt;&lt;/span&gt; -&amp;gt; &lt;span style=&quot;color: #5f6d2b;&quot;&gt;&lt;b&gt;3. 인스턴스 초기화 블럭&lt;/b&gt;&lt;/span&gt; -&amp;gt; &lt;span style=&quot;color: #f89009;&quot;&gt;&lt;b&gt;4. 생성자&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;의 순서로 실행이 된다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그리고 &lt;span style=&quot;color: #ef5369;&quot;&gt;&lt;b&gt;클래스 변수 초기화&lt;/b&gt;&lt;/span&gt;는&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;i&gt;&lt;b&gt; 클래스가 처음 생성되는 시점에서 실행&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;이 되기 때문에&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;최초 한 번 실행이 되지만&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;&lt;b&gt;인스턴스 변수 초기화&lt;/b&gt;&lt;/span&gt;는 &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;i&gt;&lt;b&gt;클래스의 인스턴스가 생성될 때 마다 실행&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;이 된다는 것을 잊지 말아야 한다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;여기까지 &lt;b&gt;클래스의 멤버&lt;/b&gt; 중 &lt;span style=&quot;color: #8a3db6;&quot;&gt;&lt;b&gt;멤버 변수&lt;/b&gt;&lt;/span&gt;에 대해서 알아보고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #8a3db6;&quot;&gt;&lt;b&gt;멤버 변수를 초기화&lt;/b&gt;&lt;/span&gt;하는 방법까지 알아봤으니&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;클래스의 멤버&lt;/b&gt; 중 다른 녀석인 &lt;span style=&quot;color: #009a87;&quot;&gt;&lt;b&gt;멤버 메소드&lt;/b&gt;&lt;/span&gt;와 &lt;span style=&quot;color: #f89009;&quot;&gt;&lt;b&gt;생성자&lt;/b&gt;&lt;/span&gt;에 대해서 알아보기 위해&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;&lt;b&gt;메소드&lt;/b&gt;&lt;/span&gt;가 무엇인지에 대해서 간단히 살펴보도록 하자.&lt;/p&gt;</description>
      <category>Java/자바 프로그래밍 기본</category>
      <category>java</category>
      <category>멤버</category>
      <category>멤버변수</category>
      <category>멤버변수의초기화</category>
      <category>변수의초기화</category>
      <category>자바프로그래밍</category>
      <category>전역변수</category>
      <category>초기화</category>
      <category>클래스</category>
      <category>클래스멤버</category>
      <author>거신</author>
      <guid isPermaLink="true">https://colossus-java-practice.tistory.com/60</guid>
      <comments>https://colossus-java-practice.tistory.com/60#entry60comment</comments>
      <pubDate>Thu, 18 May 2023 02:08:10 +0900</pubDate>
    </item>
    <item>
      <title>[자바 프로그래밍 기초] 7. 난수를 뽑아주는 Random 클래스</title>
      <link>https://colossus-java-practice.tistory.com/59</link>
      <description>&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;지난번에 자바에서 난수를 뽑아내는 방법으로 &lt;span style=&quot;color: #8a3db6;&quot;&gt;&lt;b&gt;Math.random()&lt;/b&gt;&lt;/span&gt;이라는 메소드에 대해서 알아봤었다.&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://colossus-java-practice.tistory.com/35&quot;&gt;[자바 프로그래밍 기초] 6. 난수를 뽑아주는 Math.random()&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1674289075785&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[자바 프로그래밍 기초] 6. 난수를 뽑아주는 Math.random()&quot; data-og-description=&quot;이번 시간에는 자바에서 난수를 만들어야 할 때 유용하게 사용할 수 있는 Math.random()에 대해서 살펴보도록 하자. 1. 난수 난수(亂數)란 정의된 범위 내에서 무작위로 추출된 수를 일컫는다. 난수&quot; data-og-host=&quot;colossus-java-practice.tistory.com&quot; data-og-source-url=&quot;https://colossus-java-practice.tistory.com/35&quot; data-og-url=&quot;https://colossus-java-practice.tistory.com/35&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bqC3v1/hyRm8YwzPF/2g8PsK09O6f93ih12g4AQ1/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/E6hjK/hyRmZAvIJ6/jwti5cyMhlkhW9JzBmrce1/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/oS0Cn/hyRlyqY1vw/TrqFp7qbSlJgtggClwwHVk/img.jpg?width=632&amp;amp;height=897&amp;amp;face=0_0_632_897&quot;&gt;&lt;a href=&quot;https://colossus-java-practice.tistory.com/35&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://colossus-java-practice.tistory.com/35&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bqC3v1/hyRm8YwzPF/2g8PsK09O6f93ih12g4AQ1/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/E6hjK/hyRmZAvIJ6/jwti5cyMhlkhW9JzBmrce1/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/oS0Cn/hyRlyqY1vw/TrqFp7qbSlJgtggClwwHVk/img.jpg?width=632&amp;amp;height=897&amp;amp;face=0_0_632_897');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[자바 프로그래밍 기초] 6. 난수를 뽑아주는 Math.random()&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 자바에서 난수를 만들어야 할 때 유용하게 사용할 수 있는 Math.random()에 대해서 살펴보도록 하자. 1. 난수 난수(亂數)란 정의된 범위 내에서 무작위로 추출된 수를 일컫는다. 난수&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;colossus-java-practice.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그리고 이번에는 자바에서 난수를 뽑아내는 다른 방법인&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Random 클래스&lt;/b&gt;를 이용한 방법에 대해서 알아보도록 하자.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. Random 클래스&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그렇다면 일단 &lt;b&gt;Random 클래스&lt;/b&gt;에 대해서 먼저 알아보자.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Random 클래스&lt;/b&gt;는 클래스의 이름 그대로 난수와 관련된 메소드들로 구성되어 있는 클래스이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;(자바 레퍼런스 문서나 JDK 내에서 확인해보면 알겠지만&lt;/i&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;b&gt;Random 클래스&lt;/b&gt;에는 필드가 없고 생성자와 메소드만 있다.)&lt;/i&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #409d00;&quot;&gt;&lt;b&gt;Math.random()&lt;/b&gt;&lt;/span&gt;은 단순히 &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;double 타입&lt;/b&gt;&lt;/span&gt;의 난수를 뽑아주는 것만 가능하지만&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Random 클래스&lt;/b&gt;는 난수와 관련된 메소드들이 포함되어 있기 때문에&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;다양한 조건의 난수를 뽑아내는 것이 가능하다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그리고 &lt;span style=&quot;color: #8a3db6;&quot;&gt;&lt;b&gt;Math.random()&lt;/b&gt;&lt;/span&gt;을 뜯어보면 &lt;b&gt;Random 클래스&lt;/b&gt;를 이용해 만들어진 녀석이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;(오??)&lt;/i&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;거두절미하고 일단 앞서 &lt;span style=&quot;color: #8a3db6;&quot;&gt;&lt;b&gt;Math.random()&lt;/b&gt;&lt;/span&gt;을 이용해서 난수를 뽑아낸 것과 동일하게&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Random 클래스&lt;/b&gt;를 이용해 난수를 뽑아보자.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;i&gt;예시 1)&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1675091780210&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;double randNum = Math.random(); // 0.xxxxx.....

int num_1 = (int) (randNum * 5);     // 0 ~ 4 사이의 숫자를 뽑아냄
int num_2 = (int) (randNum * 5) + 1; // 1 ~ 5 사이의 숫자를 뽑아냄

// 여기까지가 Math.random()을 이용해 난수를 뽑아내는 방법

// 여기부터가 Random 클래스를 이용해 난수를 뽑아내는 방법
Random random = new Random();

random.nextDouble();		// Math.random()과 동일한 결과 형태 출력

int num_1 = random.nextInt(5);			// (int) (randNum * 5) 와 동일한 결과 형태 출력
int num_2 = random.nextInt(5) + 1;		// (int) (randNum * 5) + 1 와 동일한 결과 형태 출력&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;비교를 위해서 앞의 내용이었던 &lt;span style=&quot;color: #8a3db6;&quot;&gt;&lt;b&gt;Math.random()&lt;/b&gt;&lt;/span&gt;의 내용과 함께 작성해 보았다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;주석의 내용에서 알 수 있듯이 &lt;b&gt;Random 클래스&lt;/b&gt;를 이용해 동일한 결과 형태를 출력하는&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;소스로 작성해 보았다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;우선&lt;b&gt; Random 클래스&lt;/b&gt;를 사용하기 위해선&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Random 클래스&lt;/b&gt;의 &lt;span style=&quot;color: #009a87;&quot;&gt;&lt;b&gt;인스턴스&lt;/b&gt;&lt;/span&gt;를 먼저 생성해줘야 한다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #8a3db6;&quot;&gt;&lt;b&gt;Math.random()&lt;/b&gt;&lt;/span&gt;과는 다르게 각각의 메소드들이 &lt;b&gt;static&lt;/b&gt;이 아니기 때문에&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;b&gt;예시 1)&lt;/b&gt;&lt;/i&gt;과 같이 &lt;span style=&quot;color: #009a87;&quot;&gt;&lt;b&gt;인스턴스&lt;/b&gt;&lt;/span&gt;로 생성해서 사용해야 한다는 것을 먼저 잊지 말자.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;(심심풀이로 Random 클래스 내부를 살펴보면 도움이 될 것이다.&lt;/i&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;s&gt;귀찮으면 어쩔 수 없고&lt;/s&gt;)&lt;/i&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그리고 &lt;b&gt;Random 클래스&lt;/b&gt;도 &lt;span style=&quot;color: #8a3db6;&quot;&gt;&lt;b&gt;Math.random()&lt;/b&gt;&lt;/span&gt;과 같이 그냥 사용할 수는 없고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #555555;&quot;&gt;역시 소스파일 내에서&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;i&gt;&lt;b&gt;java.util.Random을 import 해야 한다&lt;/b&gt;&lt;/i&gt;&lt;span style=&quot;background-color: #ffffff; color: #555555;&quot;&gt;는 것도 함께 알고 있자.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;i&gt;예시 1)&lt;/i&gt;&lt;/b&gt;을 이용해 하나씩 살펴보면&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #8a3db6;&quot;&gt;&lt;b&gt;Math.random()&lt;/b&gt;&lt;/span&gt;과 동일한 형태의 결과를 출력해 주는 &lt;span style=&quot;color: #409d00;&quot;&gt;&lt;b&gt;random.nextDouble()&lt;/b&gt;&lt;/span&gt;은&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #8a3db6;&quot;&gt;&lt;b&gt;Math.random()&lt;/b&gt;&lt;/span&gt;과 똑같이 &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;double형의 임의의 숫자&lt;/b&gt;&lt;/span&gt;를 리턴하고,&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;리턴하는 숫자의 범위 또한 &lt;span style=&quot;color: #f89009;&quot;&gt;&lt;b&gt;0.0 이상 1.0 미만&lt;/b&gt;&lt;/span&gt;이 되겠다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;실제로 Java docs 등의 문서에서 &lt;span style=&quot;color: #8a3db6;&quot;&gt;&lt;b&gt;Math.random()&lt;/b&gt;&lt;/span&gt;을 찾아보면&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;참고 항목으로 &lt;span style=&quot;color: #409d00;&quot;&gt;&lt;b&gt;Random.nextDouble()&lt;/b&gt;&lt;/span&gt; (&amp;lt;- 사실 이 표현 잘못된 표현이다.)&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;을 표시하고 있고 반대로 &lt;b&gt;Random 클래스&lt;/b&gt;에서 &lt;span style=&quot;color: #409d00;&quot;&gt;&lt;b&gt;nextDouble()&lt;/b&gt;&lt;/span&gt;을 찾아보면&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;참고 항목으로 &lt;span style=&quot;color: #8a3db6;&quot;&gt;&lt;b&gt;Math.random()&lt;/b&gt;&lt;/span&gt;을 표시하고 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그리고 잠깐 지나가는 내용이었지만 좀 자세히 봤던 사람들이라면&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이 부분이 기억이 날 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;b&gt;예시 2)&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1675094142674&quot; class=&quot;cpp&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;public static double random() {
     return RandomNumberGeneratorHolder.randomNumberGenerator.nextDouble();
}&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;b&gt;예시 2)&lt;/b&gt;&lt;/i&gt;는 &lt;span style=&quot;color: #8a3db6;&quot;&gt;&lt;b&gt;Math.random()&lt;/b&gt;&lt;/span&gt;의 메소드 구현부인데 호출한 메소드가 &lt;span style=&quot;color: #8a3db6;&quot;&gt;&lt;b&gt;nextDouble()&lt;/b&gt;&lt;/span&gt;이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;여기에서의 &lt;span style=&quot;color: #8a3db6;&quot;&gt;&lt;b&gt;nextDouble()&lt;/b&gt;&lt;/span&gt;이 &lt;i&gt;&lt;b&gt;예시 1)&lt;/b&gt;&lt;/i&gt;에서 봤던 &lt;span style=&quot;color: #409d00;&quot;&gt;&lt;b&gt;random.nextDouble()&lt;/b&gt;&lt;/span&gt;과 동일한 메소드이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;(JDK 안에서 찾아가 보면 똑같은 곳에 당도할 수 있을 것이다.)&lt;/i&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그리고 등장한 메소드가 바로 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;random.nextInt()&lt;/b&gt;&lt;/span&gt;이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2. Random 클래스의 메소드&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;우리가 &lt;span style=&quot;color: #8a3db6;&quot;&gt;&lt;b&gt;Math.random()&lt;/b&gt;&lt;/span&gt;을 이용했을 때 뽑아낸 난수를 정수형태로 변환하기 위해서&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;일련의 복잡한 계산식을 이용하고 강제 캐스팅까지 해야 했던 것을&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;한 번에 해주는 메소드가 바로 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;random.nextInt()&lt;/b&gt;&lt;/span&gt;이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #409d00;&quot;&gt;random.nextDouble()&lt;/span&gt;&lt;/b&gt;과 같이 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;random.&lt;/b&gt;&lt;b&gt;nextInt()&lt;/b&gt;&lt;/span&gt;는 메소드명 그대로 &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;int형의 임의의 숫자&lt;/b&gt;&lt;/span&gt;를 뽑아낸다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그런데 여기서 주의할 점은&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;random.nextInt()&lt;/b&gt;&lt;/span&gt;가 리턴하는 숫자의 범위이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;random.nextInt()&lt;/b&gt;&lt;/span&gt;는 다른 메소드와는 다르게 &lt;span style=&quot;color: #f89009;&quot;&gt;&lt;b&gt;int 타입의 범위 전체를 대상&lt;/b&gt;&lt;/span&gt;으로&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;임의의 정수를 리턴한다는 점이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;다시 말해, &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;random.&lt;/b&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;n&lt;/span&gt;extInt()&lt;/b&gt;&lt;/span&gt;의 숫자의 범위는&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;&lt;b&gt;&amp;ndash;2,147,483,648 ~ 2,147,483,647&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;인 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;정말 어마어마한 범위 내에서 임의의 숫자를 뽑아주는데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;현재의 우리에겐 이 정도의 숫자는 필요하지 않는다는 걸 다들 알고 있을 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그래서 &lt;b&gt;Random 클래스&lt;/b&gt;에서는 이렇게 무지막지한 숫자가 아닌&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;도가 지나치지 않는 정도의 숫자를 뽑아낼 수 있도록 다른 메소드를 제공하고 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;random.nextInt()&lt;/b&gt;&lt;/span&gt;에서 &lt;span style=&quot;color: #0593d3;&quot;&gt;&lt;b&gt;매개변수&lt;/b&gt;&lt;/span&gt;를 추가하여 &lt;span style=&quot;color: #7e98b1;&quot;&gt;&lt;b&gt;오버로딩&lt;/b&gt;&lt;/span&gt;된 메소드인&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;random.nextInt(&lt;span style=&quot;color: #0593d3;&quot;&gt;int bound&lt;/span&gt;)&lt;/b&gt;&lt;/span&gt;을 제공하고 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;여기에서 &lt;span style=&quot;color: #0593d3;&quot;&gt;&lt;b&gt;매개변수 bound&lt;/b&gt;&lt;/span&gt;는 &lt;b&gt;난수의 범위를 지정하는 변수&lt;/b&gt;가 되겠다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;i&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;즉, 0에서 bound - 1까지의 범위를 지정할 수 있는 것이다.&lt;/b&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #8a3db6;&quot;&gt;&lt;b&gt;Math.random()&lt;/b&gt;&lt;/span&gt;에서 우리가 뽑아낸 난수에 &lt;b&gt;*(곱하기)&lt;/b&gt;를 하는 것과 동일한 기능이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;생성한 임의의 수에 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;곱하는 수는 뽑아낼 숫자의 개수&lt;/b&gt;&lt;/span&gt;라고 했는데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;여기에서는 &lt;span style=&quot;color: #0593d3;&quot;&gt;&lt;b&gt;bound&lt;/b&gt;&lt;/span&gt;가 이 역할을 하고 있는 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;뒤에 더하기는 &lt;span style=&quot;color: #8a3db6;&quot;&gt;&lt;b&gt;Math.random()&lt;/b&gt;&lt;/span&gt;에서와 동일하게&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;뽑아낼 숫자의 범위에서 시작하는 숫자&lt;/b&gt;&lt;/span&gt;를 말하는 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이렇듯 &lt;b&gt;Random 클래스&lt;/b&gt;에서는 생각보다 다양하게 난수를 뽑아내는&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;메소드들을 제공하고 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;물론 위의 예시들이 &lt;span style=&quot;color: #8a3db6;&quot;&gt;&lt;b&gt;Math.random()&lt;/b&gt;&lt;/span&gt;같이&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Random 클래스&lt;/b&gt;의 메소드들을 활용해 동일한 기능처럼 작성한 것이기 때문에&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그게 그거 같아 보일 수도 있겠지만&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;분명한 것은 &lt;span style=&quot;color: #8a3db6;&quot;&gt;&lt;b&gt;Math.random()&lt;/b&gt;&lt;/span&gt;보다 &lt;b&gt;Random 클래스&lt;/b&gt;가 활용도가 더 높다는 점이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;아직은 크게 잘 느껴지지 않을 수도 있는데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;일단 더 심오하게 알아보기 전에 활용도가 조금은 느껴지도록&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Random 클래스&lt;/b&gt;의 주요 메소드들을 살펴보도록 하자.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;b&gt;표 1)&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 86.3953%; height: 173px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignCenter&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 11.0139%; text-align: center; height: 20px;&quot;&gt;&lt;b&gt;리턴타입&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 24.5876%; height: 20px; text-align: center;&quot;&gt;&lt;b&gt;메소드&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 32.4176%; height: 20px; text-align: center;&quot;&gt;&lt;b&gt;설명&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 31.9809%; height: 20px; text-align: center;&quot;&gt;&lt;b&gt;리턴 숫자의 범위&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 11.0139%; text-align: center; height: 17px;&quot;&gt;int&lt;/td&gt;
&lt;td style=&quot;width: 24.5876%; height: 17px; text-align: center;&quot;&gt;nextInt()&lt;/td&gt;
&lt;td style=&quot;width: 32.4176%; height: 17px; text-align: center;&quot;&gt;int 타입 난수 리턴&lt;/td&gt;
&lt;td style=&quot;width: 31.9809%; height: 17px; text-align: center;&quot;&gt;&amp;ndash;2,147,483,648 ~ 2,147,483,647&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 11.0139%; text-align: center; height: 17px;&quot;&gt;int&lt;/td&gt;
&lt;td style=&quot;width: 24.5876%; height: 17px; text-align: center;&quot;&gt;nextInt(int bound)&lt;/td&gt;
&lt;td style=&quot;width: 32.4176%; height: 17px; text-align: center;&quot;&gt;0 ~ bound - 1 사이의 난수 리턴&lt;/td&gt;
&lt;td style=&quot;width: 31.9809%; height: 17px; text-align: center;&quot;&gt;0 ~ (bound - 1)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 11.0139%; text-align: center; height: 17px;&quot;&gt;long&lt;/td&gt;
&lt;td style=&quot;width: 24.5876%; height: 17px; text-align: center;&quot;&gt;nextLong()&lt;/td&gt;
&lt;td style=&quot;width: 32.4176%; height: 17px; text-align: center;&quot;&gt;long 타입 난수 리턴&lt;/td&gt;
&lt;td style=&quot;width: 31.9809%; height: 17px; text-align: center;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #202124;&quot;&gt;-&lt;/span&gt;9223372036854775808&lt;br /&gt;~&lt;span style=&quot;background-color: #ffffff; color: #202124;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;9223372036854775807&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 11.0139%; text-align: center; height: 17px;&quot;&gt;float&lt;/td&gt;
&lt;td style=&quot;width: 24.5876%; height: 17px; text-align: center;&quot;&gt;nextFloat()&lt;/td&gt;
&lt;td style=&quot;width: 32.4176%; height: 17px; text-align: center;&quot;&gt;float 타입 난수 리턴&lt;/td&gt;
&lt;td style=&quot;width: 31.9809%; height: 17px; text-align: center;&quot;&gt;0.0F ~ 0.999.....F&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 11.0139%; text-align: center; height: 17px;&quot;&gt;double&lt;/td&gt;
&lt;td style=&quot;width: 24.5876%; height: 17px; text-align: center;&quot;&gt;nextDouble()&lt;/td&gt;
&lt;td style=&quot;width: 32.4176%; height: 17px; text-align: center;&quot;&gt;double 타입 난수 리턴&lt;/td&gt;
&lt;td style=&quot;width: 31.9809%; height: 17px; text-align: center;&quot;&gt;0.0D ~ 0.999......D&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 11.0139%; text-align: center; height: 17px;&quot;&gt;double&lt;/td&gt;
&lt;td style=&quot;width: 24.5876%; height: 17px; text-align: center;&quot;&gt;nextGaussian()&lt;/td&gt;
&lt;td style=&quot;width: 32.4176%; height: 17px; text-align: center;&quot;&gt;표준정규분포형으로 난수 리턴&lt;/td&gt;
&lt;td style=&quot;width: 31.9809%; height: 17px; text-align: center;&quot;&gt;표준정규분포&lt;br /&gt;(평균이 0이고, 표준편차가 1인 범위)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 11.0139%; text-align: center; height: 17px;&quot;&gt;boolean&lt;/td&gt;
&lt;td style=&quot;width: 24.5876%; height: 17px; text-align: center;&quot;&gt;nextBoolean()&lt;/td&gt;
&lt;td style=&quot;width: 32.4176%; height: 17px; text-align: center;&quot;&gt;true 또는 false를 랜덤으로 리턴&lt;/td&gt;
&lt;td style=&quot;width: 31.9809%; height: 17px; text-align: center;&quot;&gt;true / false&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 11.0139%; text-align: center; height: 17px;&quot;&gt;void&lt;/td&gt;
&lt;td style=&quot;width: 24.5876%; text-align: center; height: 17px;&quot;&gt;nextBytes(byte[] bytes)&lt;/td&gt;
&lt;td style=&quot;width: 32.4176%; text-align: center; height: 17px;&quot;&gt;byte 배열에 난수의 byte로 채움&lt;/td&gt;
&lt;td style=&quot;width: 31.9809%; text-align: center; height: 17px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 11.0139%; text-align: center; height: 17px;&quot;&gt;void&lt;/td&gt;
&lt;td style=&quot;width: 24.5876%; height: 17px; text-align: center;&quot;&gt;setSeed()&lt;/td&gt;
&lt;td style=&quot;width: 32.4176%; height: 17px; text-align: center;&quot;&gt;시드 지정&lt;/td&gt;
&lt;td style=&quot;width: 31.9809%; height: 17px; text-align: center;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;b&gt;표 1)&lt;/b&gt;&lt;/i&gt;에서도 확인할 수 있듯이&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;다양한 타입의 난수를 리턴하는 메소드들을 제공하고 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그렇기 때문에 따로 계산을 한다든가, 캐스팅 등의 변환을 하지 않고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Random 클래스&lt;/b&gt;의 &lt;span style=&quot;color: #0593d3;&quot;&gt;&lt;b&gt;인스턴스&lt;/b&gt;&lt;/span&gt;를 이용해&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;다양한 타입의 난수를 만들어 낼 수 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;거기에 &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;true&lt;/b&gt; &lt;/span&gt;또는 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;false&lt;/b&gt;&lt;/span&gt;까지 랜덤으로 뽑아낼 수 있도록&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;boolean 타입&lt;/b&gt;의 메소드까지 제공하고 있으니 이 얼마나 활용도가 높지 않을 수 있겠는가!&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;심지어 &lt;b&gt;표준정규분포형&lt;/b&gt;의 난수까지 제공해주고 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;s&gt;&lt;i&gt;(사실 저게 얼마나, 어디에 활용될지는 모르겠지만....)&lt;/i&gt;&lt;/s&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;s&gt;&lt;/s&gt;아무튼 위와 같이 다양한 메소드들을 제공하고 있고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;우리들은 필요에 맞게 메소드들을 활용만 하면 되는 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;물론 이렇게 다양한 메소드들을 제공한다고 해서&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;i&gt;무조건 Random 클래스가 좋다는 의미는 아니다.&lt;/i&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;필요에 따라선 간단하게 난수를 뽑아낼 때는 인스턴스 생성 없이&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;바로 &lt;span style=&quot;color: #8a3db6;&quot;&gt;&lt;b&gt;Math.random()&lt;/b&gt;&lt;/span&gt;을 호출해서 난수를 뽑아내는 것도 좋은 방법이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그런데 이렇게만 보면 &lt;b&gt;Random 클래스&lt;/b&gt;든 &lt;span style=&quot;color: #8a3db6;&quot;&gt;&lt;b&gt;Math.random()&lt;/b&gt;&lt;/span&gt;이든 별 차이가 없어 보이지만&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;위의 표에 얼굴을 잠깐 비춘 녀석 때문에&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Random 클래스&lt;/b&gt;와 &lt;span style=&quot;color: #8a3db6;&quot;&gt;&lt;b&gt;Math.random()&lt;/b&gt;&lt;/span&gt;의 차이가 나타나고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Random 클래스&lt;/b&gt;의 활용도를 나타낼 수 있다고 볼 수 있겠다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그것이 바로&lt;/p&gt;
&lt;h4 style=&quot;text-align: center;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;setSeed()&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;라는 메소드이다.&lt;/p&gt;</description>
      <category>Java/자바 프로그래밍 기초</category>
      <category>java</category>
      <category>Random</category>
      <category>random클래스</category>
      <category>난수</category>
      <category>난수발생</category>
      <category>자바</category>
      <category>자바프로그래밍</category>
      <author>거신</author>
      <guid isPermaLink="true">https://colossus-java-practice.tistory.com/59</guid>
      <comments>https://colossus-java-practice.tistory.com/59#entry59comment</comments>
      <pubDate>Tue, 31 Jan 2023 02:44:58 +0900</pubDate>
    </item>
    <item>
      <title>[자바 프로그래밍 기초] 6. 난수를 뽑아주는 Math.random()</title>
      <link>https://colossus-java-practice.tistory.com/35</link>
      <description>&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 자바에서 &lt;b&gt;난수&lt;/b&gt;를 만들어야 할 때 유용하게 사용할 수 있는&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #8a3db6;&quot;&gt;&lt;b&gt;Math.random()&lt;/b&gt;&lt;/span&gt;에 대해서 살펴보도록 하자.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;text-align: center;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;1. 난수&lt;/b&gt;&lt;/h4&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;난수&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #202122;&quot;&gt;(亂數)란 정의된 범위 내에서&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;무작위&lt;span style=&quot;background-color: #ffffff; color: #202122;&quot;&gt;로 추출된&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;수&lt;span style=&quot;background-color: #ffffff; color: #202122;&quot;&gt;를 일컫는다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #202122;&quot;&gt;난수는 누구라도 그 다음에 나올 값을 확신할 수 없어야 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;span style=&quot;background-color: #ffffff; color: #202122;&quot;&gt;-출처 : 위키백과-&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;난수&lt;/b&gt;의 의미를 찾아보면 이렇게 설명하고 있는데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;한마디로 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;랜덤한 숫자&lt;/b&gt;&lt;/span&gt;란 뜻이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;우리가 가끔씩 프로그램을 개발할 때 &lt;b&gt;난수&lt;/b&gt;가 필요한 경우가 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;대표적으로 &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;i&gt;&lt;b&gt;로또번호 생성기&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;나 &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;i&gt;&lt;b&gt;추첨기&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;, &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;i&gt;&lt;b&gt;암호키 생성&lt;/b&gt;&lt;/i&gt;&lt;/span&gt; 등과 같이&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;우리가 전혀 추측할 수 없는 숫자나 값을 뽑아내야 할 때가 바로 그 경우인데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이런 걸 구현할 수 있도록 자바에서는 &lt;span style=&quot;color: #8a3db6;&quot;&gt;&lt;b&gt;Math.random()&lt;/b&gt;&lt;/span&gt;라는 메소드를 제공하고 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그리고 &lt;b&gt;Random클래스&lt;/b&gt;라는 랜덤객체를 생성할 수 있는 클래스도 제공하는데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;지금 알아보려는 &lt;span style=&quot;color: #8a3db6;&quot;&gt;&lt;b&gt;Math.random()&lt;/b&gt;&lt;/span&gt;와는 비슷하면서도 다르기 때문에&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;바로 &lt;span style=&quot;color: #8a3db6;&quot;&gt;&lt;b&gt;Math.random()&lt;/b&gt;&lt;/span&gt;에 대해서 먼저 알아보고 이어서 알아보도록 하자.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;(사실 Math.random()은 Random클래스를 이용한다.)&lt;/i&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;다시 본론으로 돌아와 난수의 뜻이 뭔지는 알겠으니&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이제 그 난수인지 뭔지 하는 걸 한 번 뽑아보자.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;text-align: center;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;2. Math.random()&lt;/b&gt;&lt;/h4&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;자바에서 &lt;b&gt;난수&lt;/b&gt;를 뽑아내는데 가장 간단한 방법이&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #8a3db6;&quot;&gt;&lt;b&gt;Math.random()&lt;/b&gt;&lt;/span&gt;라는 메소드를 사용하는 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;아래의 코드를 살펴보자.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;예시 1)&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1672929143001&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;public class RandomNumberTest {
	public static void main(String[] args) {
    	
        double randNum = Math.random();	// 0.xxxxxx.....
        System.out.println(randNum);
        
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;b&gt;예시 1)&lt;/b&gt;&lt;/i&gt;이 &lt;span style=&quot;color: #8a3db6;&quot;&gt;&lt;b&gt;Math.random()&lt;/b&gt;&lt;/span&gt;를 사용하는 방법이 되겠다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #8a3db6;&quot;&gt;&lt;b&gt;Math.random()&lt;/b&gt;&lt;/span&gt;는 &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;double형의 임의의 숫자&lt;/b&gt;&lt;/span&gt;를 리턴하는데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;숫자의 범위는 &lt;span style=&quot;color: #f89009;&quot;&gt;&lt;b&gt;0.0 ~ 0.99999.....&lt;/b&gt;&lt;/span&gt;가 되겠다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;다시 말해, &lt;span style=&quot;color: #f89009;&quot;&gt;&lt;b&gt;0.0이상 1.0 미만의 임의의 숫자를 리턴&lt;/b&gt;&lt;/span&gt;하는 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;(간혹 인터넷에서 Math.random()에 대해서 검색하다 보면&lt;/i&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;출력되는 수의 범위가 0.0에서 1.0까지라고 설명하는 글들이 있는데&lt;/i&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;정확히는 1.0 미만이기 때문에 1은 절대로 나올 수 없다.)&lt;/i&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;i&gt;예시 2)&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1672931040800&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;public static double random() {
     return RandomNumberGeneratorHolder.randomNumberGenerator.nextDouble();
}&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Math 클래스&lt;/b&gt;에서 &lt;span style=&quot;color: #8a3db6;&quot;&gt;&lt;b&gt;random()&lt;/b&gt;&lt;/span&gt;를 찾아보면&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;b&gt;예시 2)&lt;/b&gt;&lt;/i&gt;와 같은 내용을 확인할 수 있을 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;해당 내용이 중요한 것은 아니고 메소드가 어떻게 되어 있는지 참고용으로 넣어봤다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;b&gt;예시 2)&lt;/b&gt;&lt;/i&gt;에서 알 수 있듯이 &lt;span style=&quot;color: #8a3db6;&quot;&gt;&lt;b&gt;Math.random()&lt;/b&gt;&lt;/span&gt;는 &lt;b&gt;static 메소드&lt;/b&gt;이므로&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;인스턴스를 생성하지 않고&amp;nbsp;&lt;span style=&quot;color: #8a3db6;&quot;&gt;&lt;b&gt;Math.random()&lt;/b&gt;&lt;/span&gt;의 형태로 &lt;b&gt;클래스명으로 바로 호출할 수 있다.&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;물론 이클립스 같은 IDE에서 작성하면 자동으로 추가되겠지만&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;일단은 소스파일 내에서 &lt;i&gt;&lt;b&gt;java.lang.Math를 import 해야 한다&lt;/b&gt;&lt;/i&gt;는 건 기본으로 알고 있자.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그런데 이렇게만 놓고 봐서는 막상 써먹으려면 어찌해야 하나 싶다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;리턴을 0.0에서 0.999999.... 이 사이의 수를 하나 뽑아낸다고 하는데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;아무리 봐도 이 숫자를 그대로 사용하기엔 난감하다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그래서 조금 다듬어서 어딘가에 활용하기에 좋은 형태로 만들어 보겠다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;b&gt;예시 3)&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1672934867761&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;double randNum = Math.random(); // 0.xxxxx.....

int num_1 = (int) (randNum * 5);     // 0 ~ 4 사이의 숫자를 뽑아냄
int num_2 = (int) (randNum * 5) + 1; // 1 ~ 5 사이의 숫자를 뽑아냄&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #8a3db6;&quot;&gt;&lt;b&gt;Math.random()&lt;/b&gt;&lt;/span&gt;로 뽑아낸 임의의 숫자를&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;0 ~ 4 사이의 수로 변환하는 방법&lt;/b&gt;과&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1 ~ 5 사이의 수로 변환하는 방법&lt;/b&gt;이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;b&gt;예시 3)&lt;/b&gt;&lt;/i&gt;의 방법을 잘 보면 대충 감을 잡았을 것이라 생각하는데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;생성한 임의의 수에 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;곱하는 수는 뽑아낼 숫자의 개수&lt;/b&gt;&lt;/span&gt;를 말하는 것이고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;뒤에 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;더하는 숫자는 뽑아낼 숫자의 범위에서 시작하는 숫자&lt;/b&gt;&lt;/span&gt;라고 눈치챘을 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #8a3db6;&quot;&gt;Math.random()&lt;/span&gt;&lt;/b&gt;는 최솟값이 0.0이므로 시작하는 숫자는 0일 것이고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;곱하는 수는 뽑아낼 숫자의 개수&lt;/b&gt;&lt;/span&gt;라고 했으니&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;5를 곱하면 0부터 5개의 숫자&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;즉, 0 ~ 4 사이에서 임의의 숫자를 뽑아내는 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그리고 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;뒤에 더하는 숫자는 뽑아낼 숫자의 범위에서 시작하는 숫자&lt;/b&gt;&lt;/span&gt;라고 했으니&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;1을 더하면 1부터 시작하니 숫자의 범위는 1 ~ 5가 되는 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;만약 -3을 더하게 되면 숫자의 범위는 -3 ~ 1이 된다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그리고 뽑아낸 숫자를 &lt;span style=&quot;color: #009a87;&quot;&gt;&lt;b&gt;int 타입&lt;/b&gt;&lt;/span&gt;으로 &lt;span style=&quot;color: #009a87;&quot;&gt;&lt;i&gt;&lt;b&gt;강제 캐스팅&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;을 하는데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;앞에서도 설명했듯이 &lt;span style=&quot;color: #8a3db6;&quot;&gt;&lt;b&gt;Math.random()&lt;/b&gt;&lt;/span&gt;의 &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;리턴타입은 double&lt;/b&gt;&lt;/span&gt;이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그렇기 때문에 우리는 쓸데없는 소수점을 없애고 정수로만 사용하기 위해&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;&lt;b&gt;int 타입&lt;/b&gt;&lt;/span&gt;으로 &lt;span style=&quot;color: #009a87;&quot;&gt;&lt;b&gt;강제 캐스팅&lt;/b&gt;&lt;/span&gt;을 한 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;물론 int 뿐만 아니라 long, float, short과 같이 숫자로 사용할 수 있는 타입으로 캐스팅도 가능하다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;b&gt;예시 4)&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1672937906406&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;int lottoNumber = (int) (Math.random() * 45) + 1;&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;흔한 로또번호 생성기 코드이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;위의 공식만 기억한다면 난수 생성하는 건 별로 어렵지 않다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3. 정리&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 자바에서 &lt;b&gt;난수&lt;/b&gt;를 뽑아내는 방법 중 하나인&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #8a3db6;&quot;&gt;&lt;b&gt;Math.random()&lt;/b&gt;&lt;/span&gt;를 사용하는 방법과 간단한 예시를 알아봤다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #8a3db6;&quot;&gt;&lt;b&gt;Math.random()&lt;/b&gt;&lt;/span&gt;은 자바에서 &lt;b&gt;난수&lt;/b&gt;를 뽑아내는데 가장 간단한 방법이고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;static 메소드&lt;/b&gt;이기 때문에 클래스명인 Math를 앞에 붙이고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;&lt;b&gt;인스턴스 생성 없이 &lt;span style=&quot;color: #8a3db6;&quot;&gt;Math.random()&lt;/span&gt;의 형태로 바로 호출할 수 있다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;(소스파일 내에서 java.lang.Math가 import 되어 있어야 정상작동 한다.)&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #8a3db6;&quot;&gt;&lt;b&gt;Math.random()&lt;/b&gt;&lt;/span&gt;은 &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;double 타입의 값을 리턴&lt;/b&gt;&lt;/span&gt;하는데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;리턴하는 &lt;span style=&quot;color: #f89009;&quot;&gt;&lt;b&gt;값의 범위는 0.0 ~ 0.9999....&lt;/b&gt;&lt;/span&gt; 까지이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이를 좀 더 효과적으로 사용하기 위해 가공을 하는 방법으로는&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #8a3db6;&quot;&gt;&lt;b&gt;Math.random()&lt;/b&gt;&lt;/span&gt;으로 뽑은 수에 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;뽑아내려는 숫자의 개수를 곱하고&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;해당 수의 범위에서 시작하는 숫자를 더해주면 된다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그리고 필요에 따라서 숫자로 사용할 수 있는 타입,&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;int, float, long, short 등의 타입으로 &lt;span style=&quot;color: #009a87;&quot;&gt;&lt;b&gt;강제 캐스팅&lt;/b&gt;&lt;/span&gt;을 해서&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;좀 더 효과적으로 사용할 수도 있겠다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #8a3db6;&quot;&gt;&lt;b&gt;Math.random()&lt;/b&gt;&lt;/span&gt;에 대해서 알아봤으니&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;다음에는 &lt;b&gt;Random 클래스&lt;/b&gt;를 이용해 &lt;b&gt;난수&lt;/b&gt;를 뽑아보도록 하겠다.&lt;/p&gt;</description>
      <category>Java/자바 프로그래밍 기초</category>
      <category>java</category>
      <category>Math.random()</category>
      <category>random()</category>
      <category>난수</category>
      <category>난수발생</category>
      <category>의사난수</category>
      <category>자바</category>
      <category>자바프로그래밍</category>
      <author>거신</author>
      <guid isPermaLink="true">https://colossus-java-practice.tistory.com/35</guid>
      <comments>https://colossus-java-practice.tistory.com/35#entry35comment</comments>
      <pubDate>Fri, 6 Jan 2023 09:41:03 +0900</pubDate>
    </item>
    <item>
      <title>[자바 프로그래밍 기본] 2. 클래스의 구성 (1) 멤버</title>
      <link>https://colossus-java-practice.tistory.com/58</link>
      <description>&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;지난 시간에는 &lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;클래스(Class)&lt;/b&gt;&lt;/span&gt;가 무엇인지에 대해서 알아봤고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;간단하게 &lt;b&gt;클래스&lt;/b&gt;를 생성하는 방법에 대해서 알아봤었다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그런데 &lt;b&gt;클래스&lt;/b&gt;를 생성한다고 해도 &lt;b&gt;클래스&lt;/b&gt;는 무엇으로 구성되어 있으며,&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;무엇을 어떻게 넣어야 하는지 알아야&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;만들어서 써먹든지 말든지 할 수 있을 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;스티브 잡스가 무대에 나와서 &quot;iPhone&quot;이라고 했을 때&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;관객들은 환호하겠지만&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;잡스가 거기에서&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;i&gt;&lt;b&gt;아이폰이 정작 무엇인지, 뭘 할 수 있는지, 무슨 기능이 들어있는지 설명하지 않고 발표를 끝냈다면&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;환호하던 관객들은 순식간에 대략 정신이 멍해졌을 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그러니 주인장도 이 글을 읽는 여러분들의 정신이 멍해지지 않도록&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;클래스&lt;/b&gt;가 무엇인지에서 끝내지 않고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;i&gt;&lt;b&gt;클래스 안에는 무엇이 들어있으며,&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;i&gt;&lt;b&gt;어떤 걸 할 수 있으며,&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;i&gt;&lt;b&gt;어떻게 만드는지&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;에 대해서 알려주려고 한다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그래서 이번 시간에는 &lt;b&gt;클래스&lt;/b&gt; 안에는 어떤 것들이 있는지&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그리고 어떤 역할을 하는지에 대해서 알아보고자 한다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;이들을 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;클래스의 멤버&lt;/b&gt;&lt;/span&gt;라고 지칭할 텐데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;클래스의 멤버&lt;/b&gt;&lt;/span&gt;를 이해하고 나면 클래스를 생성하는 것부터 시작해&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;어떻게 이용할 것인가에 대한 전반적인 이미지가 그려질 것이라고 생각한다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;목표 : &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;클래스의 멤버&lt;/b&gt;&lt;/span&gt;에 대해서 이해하고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;전역 변수, 지역 변수, 클래스 멤버, 인스턴스 멤버&lt;/b&gt;&lt;/span&gt;가 무엇인지 이해할 수 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. 클래스의 구성&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그렇다면 클래스가 무엇으로 구성되어 있는지부터 살펴보자.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;앞서 만들어놨던 &lt;b&gt;볼펜심 설계도&lt;/b&gt;를 가져오겠다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;b&gt;예시 1)&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1672587073205&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class 볼펜심_설계도 {
    int 볼펜심_길이;
    String 볼펜심_형태;
    int 볼펜심_둘레;
    String 볼펜촉_모양;
    Color 잉크색;
    int 잉크양;

    public void 잉크를_뽑아냄() {
        
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;여기에서 우리는 &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;볼펜심_길이&lt;/b&gt;&lt;/span&gt;, &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;볼펜심_형태&lt;/b&gt;&lt;/span&gt;, &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;잉크양&lt;/b&gt;&lt;/span&gt; 등이&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;i&gt;&lt;b&gt;변수(Variable)&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;라는 것도 이미 알고 있고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;&lt;b&gt;잉크를_뽑아냄()&lt;/b&gt;&lt;/span&gt;은&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;&lt;i&gt;&lt;b&gt;메소드(Method, 함수)&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;라는 것도 이미 알고 있을 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이 두 개가 바로 &lt;b&gt;클래스를 구성하고 있는 요소&lt;/b&gt;가 되겠다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이렇듯 클래스 내부에 필요한 &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;변수&lt;/b&gt;&lt;/span&gt;와 &lt;span style=&quot;color: #009a87;&quot;&gt;&lt;b&gt;메소드&lt;/b&gt;&lt;/span&gt;를 넣어두고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;클래스를 인스턴스로 생성할 때 필요한 변수를 불러와서 값을 이용하거나&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;메소드를 호출해 해당 기능을 사용할 수 있는 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;위와 같이 변수와 메소드들을 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;클래스의 멤버(Member)&lt;/b&gt;&lt;/span&gt;라고 지칭하며,&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;여기에서 &lt;span style=&quot;color: #8a3db6;&quot;&gt;&lt;b&gt;변수와 상수를 하나로 묶어 멤버 필드(Member Field)&lt;/b&gt;&lt;/span&gt;라고 하며&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;그중 &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;변수를 멤버 변수(Member Variable)&lt;/b&gt;&lt;/span&gt;라고 하고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;&lt;b&gt;메소드를 멤버 메소드(Member Method)&lt;/b&gt;&lt;/span&gt;라고 한다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그림을 이용해서 좀 더 직관적으로 표현하자면 아래와 같이 표현할 수 있겠다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;i&gt;그림 1)&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;클래스 구조.png&quot; data-origin-width=&quot;430&quot; data-origin-height=&quot;470&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bdOS7g/btrVp0qgqre/pl6jYBZP1DBeAxYufowA0k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bdOS7g/btrVp0qgqre/pl6jYBZP1DBeAxYufowA0k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bdOS7g/btrVp0qgqre/pl6jYBZP1DBeAxYufowA0k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbdOS7g%2FbtrVp0qgqre%2Fpl6jYBZP1DBeAxYufowA0k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;430&quot; height=&quot;470&quot; data-filename=&quot;클래스 구조.png&quot; data-origin-width=&quot;430&quot; data-origin-height=&quot;470&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;우리가 &lt;i&gt;&lt;b&gt;객체지향, 클래스, 객체&lt;/b&gt;&lt;/i&gt;에 대해서 알아보면서 클래스가 어떤 역할을 했는지 앞에서 알아봤었는데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;좀 더 압축해서 한 문장으로 설명한다면&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;&lt;b&gt;설계도 역할을 하는 클래스는 자바 프로그램의 기본 단위&lt;/b&gt;&lt;/span&gt;라고 할 수 있겠다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이렇듯 클래스라는 틀 안에서 코드가 생성되고 프로그램이 동작하는 것이기 때문에&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;자바를 처음 배울 때 만났던 변수와 메소드 등이 전부 클래스 안에 있어야 한다는 걸 어느 정도 눈치챘을 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;i&gt;&lt;b&gt;변수든 메소드든 절대 클래스 밖에선 존재할 수 없는 것들이다.&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2. 변수의 유효 범위(Variable Scope)&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;우리는 이전까지 변수라는 녀석에 대해서 단순히 하나의 값을 저장하는 것으로만 알고 있었는데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;클래스에 대해서 알아가고 있기 때문에&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;여기에서는 변수를 이용할 수 있는 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;유효 범위(Variable Scope)&lt;/b&gt;&lt;/span&gt;에 대해서 알아보려고 한다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;i&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;변수&lt;/b&gt;&lt;/span&gt;는 어디에 선언되느냐에 따라서 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;유효 범위&lt;/b&gt;&lt;/span&gt;가 달라지게 된다.&lt;/i&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;여기에서 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;유효 범위&lt;/b&gt;&lt;/span&gt;란 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;선언된 그 변수를 호출해서 사용할 수 있는 범위&lt;/b&gt;&lt;/span&gt;를 말하는 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;즉, 선언된 위치가 &lt;i&gt;&lt;b&gt;클래스 안에 멤버 변수로 선언되느냐,&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;아니면 &lt;i&gt;&lt;b&gt;메소드 안에서 변수로 선언되느냐&lt;/b&gt;&lt;/i&gt;에 따라서 어디에서는 호출할 수 있고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;어디에서는 호출할 수 없는 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;범위를 생각해보면 당연히 메소드는 클래스 안에 포함되어 있을 테니&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;클래스가 메소드보다 범위가 더 넓을 것이고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;변수도 멤버 변수가 호출할 수 있는 범위가 더 넓을 것이라고 예상할 수 있을 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;반대로 메소드 안에 선언된 변수는 사용할 수 있는 범위가 극히 좁을 것이다.&lt;/i&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;여기에서 &lt;b&gt;클래스에서 선언된 멤버 변수&lt;/b&gt;를 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;&lt;i&gt;전역 변수&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;라고 표현한다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그리고 &lt;b&gt;메소드 안에서 선언된 변수&lt;/b&gt;를 &lt;i&gt;&lt;b&gt;&lt;span style=&quot;color: #8a3db6;&quot;&gt;지역 변수&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;라고 표현한다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;단어 그대로 클래스 내부 전역에서 사용할 수 있기 때문에 &lt;i&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;전역변수,&lt;/b&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;메소드라는 국한된 지역 내에서만 사용할 수 있기 때문에 &lt;i&gt;&lt;span style=&quot;color: #8a3db6;&quot;&gt;&lt;b&gt;지역변수&lt;/b&gt;&lt;/span&gt;&lt;/i&gt;인 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;b&gt;그림 2)&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;호출가능 범위.png&quot; data-origin-width=&quot;535&quot; data-origin-height=&quot;348&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bArSIq/btrVsnrKTfK/R2dIIakpaDkyuP4UFkGPwk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bArSIq/btrVsnrKTfK/R2dIIakpaDkyuP4UFkGPwk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bArSIq/btrVsnrKTfK/R2dIIakpaDkyuP4UFkGPwk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbArSIq%2FbtrVsnrKTfK%2FR2dIIakpaDkyuP4UFkGPwk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;535&quot; height=&quot;348&quot; data-filename=&quot;호출가능 범위.png&quot; data-origin-width=&quot;535&quot; data-origin-height=&quot;348&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그림에서도 알 수 있듯이 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;전역 변수&lt;/b&gt;&lt;/span&gt;의 경우에는 선언된 클래스 안에서라면&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;어디에서든 호출하고 사용할 수 있지만&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #8a3db6;&quot;&gt;&lt;b&gt;지역 변수&lt;/b&gt;&lt;/span&gt;의 경우에는 선언된 메소드 안에서만 사용이 가능하고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;메소드의 범위를 벗어나면 사용할 수 없다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이렇듯 변수를 선언할 때&amp;nbsp; 사용할 수 있는 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;유효 범위&lt;/b&gt;&lt;/span&gt;가 있으니&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;어디에 어떻게 선언할 것인가에 대한 부분을 생각하면서 프로그램을 작성해야 한다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그런데 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;전역 변수&lt;/b&gt;&lt;/span&gt;는 변수가 생성되는 시점에 따라 두 가지로 나눌 수 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그것이 바로 &lt;b&gt;클래스 변수&lt;/b&gt;와 &lt;b&gt;인스턴스 변수&lt;/b&gt;인데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이 둘은 자바 프로그램이 실행될 때 생성이 되는 시점도 다르고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;올라가는 메모리의 위치도 다르다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3. 클래스 멤버와 인스턴스 멤버&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;여기에서 우리는 &lt;i&gt;&lt;b&gt;static&lt;/b&gt;&lt;/i&gt;이라는 녀석을 만나게 된다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;b&gt;static&lt;/b&gt;&lt;/i&gt;, 말 그대로 정적인 무언가를 지칭하는 자바의 예약어이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;b&gt;static&lt;/b&gt;&lt;/i&gt;은 변수에만 붙을 수 있는 것이 아니라 메소드에도 붙을 수가 있는데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;이를 &lt;span style=&quot;color: #7e98b1;&quot;&gt;&lt;b&gt;클래스 변수, 클래스 메소드라고 하고 합쳐서 클래스 멤버&lt;/b&gt;&lt;/span&gt;라고 표현한다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;혹여나 하는 말이지만 앞의 내용과 혼동하면 안 되는데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;앞에서는 &lt;b&gt;클래스&lt;i&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&quot;의&quot;&lt;/span&gt;&lt;/i&gt; 멤버&lt;/b&gt;를 알아본 것이고 &lt;span style=&quot;color: #7e98b1;&quot;&gt;&lt;b&gt;&quot;클래스 멤버&quot;&lt;/b&gt;&lt;/span&gt;에 대해서 설명한 것이 아니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그렇기 때문에 단순히 클래스 안에 선언된 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;변수와 메소드 전부&lt;/b&gt;&lt;/span&gt;가&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #7e98b1;&quot;&gt;클래스 멤버&lt;/span&gt;&lt;/b&gt;라고 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;i&gt;&lt;b&gt;오해하면 안 된다.&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이 들은 단순히 &lt;span style=&quot;color: #8a3db6;&quot;&gt;&lt;b&gt;&quot;멤버&quot;&lt;/b&gt;&lt;/span&gt;인 것이지 &lt;span style=&quot;color: #7e98b1;&quot;&gt;&lt;b&gt;&quot;클래스 멤버&quot;&lt;/b&gt;&lt;/span&gt;가 아니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;정확하게 구분해서 이해할 필요가 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;i&gt;&lt;b&gt;(분명히 헷갈릴 가능성이 높기 때문에 가능하면 제대로 구분해서 이해하고 있길 바란다.)&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;다시 돌아와서 &lt;span style=&quot;color: #7e98b1;&quot;&gt;&lt;b&gt;클래스 멤버&lt;/b&gt;&lt;/span&gt;는 &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;멤버 필드&lt;/b&gt;&lt;/span&gt;나 &lt;span style=&quot;color: #009a87;&quot;&gt;&lt;b&gt;멤버 메소드&lt;/b&gt;&lt;/span&gt;를 선언할 때&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;앞에 &lt;b&gt;&quot;static&quot;&lt;/b&gt;을 붙여주면 된다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이는 우리가 가장 많이 만나는 main 메소드에서 잘 나타나는데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;main 메소드 안에 클래스 변수 값을 출력하는 코드를 간단하게 작성해 보았다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;b&gt;예시 2)&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1672644755711&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;public class Test {
    static String testText = &quot;Hello World!&quot;;
   
    public static void main(String[] args) {
    	System.out.println(testText);
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;b&gt;예시 2)&lt;/b&gt;&lt;/i&gt;와 같이 선언하려는 변수 또는 메소드 앞에 &lt;b&gt;static&lt;/b&gt;을 붙여주면&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그 멤버는 &lt;span style=&quot;color: #7e98b1;&quot;&gt;&lt;b&gt;클래스 멤버&lt;/b&gt;&lt;/span&gt;가 되는 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;자바 프로그램의 시작점인 main 메소드가 바로 대표적인&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #781b33;&quot;&gt;&lt;b&gt;클래스 메소드, 정적 메소드, static 메소드&lt;/b&gt;&lt;/span&gt;이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;(전부 똑같은 말이다.)&lt;/i&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;앞에서도 잠깐 언급을 했지만 여기에 &lt;b&gt;static&lt;/b&gt;이 붙으면서&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;인스턴스 변수와는 다르게 프로그램이 실행되면서 메모리에 올라가는 시점이 달라진다고 했었다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이 블로그의 &lt;b&gt;&lt;i&gt;프로그래밍 기본 지식의 변수 챕터&lt;/i&gt;&lt;/b&gt;에서&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;참조형 변수&lt;/b&gt;를 다루면서 잠시 메모리 구조에 대해서 알아본 적이 있는데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그 그림에서 표현되지 않은 &lt;b&gt;Static영역(클래스 영역, 메소드 영역)&lt;/b&gt;이라는 곳이 존재하는데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;바로 &lt;span style=&quot;color: #7e98b1;&quot;&gt;&lt;b&gt;클래스 멤버&lt;/b&gt;&lt;/span&gt;가 프로그램이 실행될 때 올라가는 위치인 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;즉, 프로그램이 실행되고 종료되기 전까지 계속해서 남아있는 &lt;b&gt;멤버&lt;/b&gt;인 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;b&gt;그림 3)&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;메모리구조.png&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;430&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cb0xnE/btrVkeQ5KZz/b4Kz8WkVZBIMqhkEzJhwFk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cb0xnE/btrVkeQ5KZz/b4Kz8WkVZBIMqhkEzJhwFk/img.png&quot; data-alt=&quot;Stack위에 공간 있어요!!!!!!!&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cb0xnE/btrVkeQ5KZz/b4Kz8WkVZBIMqhkEzJhwFk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcb0xnE%2FbtrVkeQ5KZz%2Fb4Kz8WkVZBIMqhkEzJhwFk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;430&quot; data-filename=&quot;메모리구조.png&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;430&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Stack위에 공간 있어요!!!!!!!&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;(그림이 그렇다는 거지 실제 메모리 구조가 이러한 형태로 되어 있는 게 아니다.)&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;반대로 &lt;span style=&quot;color: #409d00;&quot;&gt;&lt;b&gt;인스턴스 변수, 인스턴스 멤버&lt;/b&gt;&lt;/span&gt;는 &lt;b&gt;Static영역&lt;/b&gt;이 아닌 &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;Stack영역&lt;/b&gt;&lt;/span&gt;, &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;Heap영역&lt;/b&gt;&lt;/span&gt;에 위치하고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이는 &lt;span style=&quot;color: #409d00;&quot;&gt;&lt;b&gt;인스턴스로 생성이 되거나 호출이 되면 그제서야 만들어지는 멤버&lt;/b&gt;&lt;/span&gt;라는 뜻이기도 하다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이러한 특징 때문에 클래스 &lt;span style=&quot;color: #7e98b1;&quot;&gt;&lt;b&gt;멤버&lt;span style=&quot;color: #000000;&quot;&gt;와&lt;/span&gt;&lt;/b&gt;&lt;/span&gt; &lt;span style=&quot;color: #409d00;&quot;&gt;&lt;b&gt;인스턴스 멤버&lt;/b&gt;&lt;/span&gt;를 혼용해서 코드를 작성할 때 제약조건이 생기게 된다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;i&gt;예시 3)&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1672646386733&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;public class Test {
    String testText = &quot;Hello World!&quot;;
   
    public static void main(String[] args) {
    	System.out.println(testText);
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;위의 코드는 멤버 변수인 testText에서 &lt;b&gt;static&lt;/b&gt;을 지운 것뿐인데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;해당 코드는 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;에러&lt;/b&gt;&lt;/span&gt;를 뿜뿜하게 된다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;생각해보면 정말 간단한 이유 때문이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;main 메소드는 &lt;b&gt;static&lt;/b&gt;으로 만들어진 &lt;span style=&quot;color: #7e98b1;&quot;&gt;&lt;b&gt;클래스 메소드, 정적 메소드&lt;/b&gt;&lt;/span&gt;이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;즉, 프로그램이 실행되면 &lt;b&gt;Static영역&lt;/b&gt;에 위치하는 메소드인 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그런데 main 메소드의 내부를 잘 살펴보니 어라?&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;testText라는 &lt;span style=&quot;color: #409d00;&quot;&gt;&lt;b&gt;인스턴스 변수&lt;/b&gt;&lt;/span&gt;가 위치하고 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #409d00;&quot;&gt;&lt;b&gt;인스턴스 변수, 인스턴스 멤버는 인스턴스가 생성되어야 생성이 된다고 했으니&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;프로그램이 실행되고 &lt;b&gt;Static영역&lt;/b&gt;에 위치하는 시점에서는 testText가 생성조차 되지 않은 상태인 셈이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그러니 만들어지지도 않은 녀석을 메모리에 위치시키려고 하니 여기에서 에러가 발생하는 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그래서 코드를 작성하는 컴파일러 단계에서&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이거 백퍼 프로그램 실행하면 에러 나니까 testText를 지우든지, 아님 static으로 선언하든지 해라라고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;알려주는 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;이렇게 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;i&gt;&lt;b&gt;해당 멤버의 생성 시점에 따라서 오류가 발생할 수도 있으니&lt;/b&gt;&lt;/i&gt;&lt;/span&gt; 꼭 이해해주길 바란다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;b&gt;예시 4)&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1672647017850&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;public class Test {
    static String testText = &quot;Hello World!&quot;;
    int testNumber = 10;
   
   // 인스턴스 메소드의 경우에는 내부에 클래스 변수든 인스턴스 변수든 뭘 써도 상관없다.
    public void start() {
    	System.out.println(testText);
        System.out.println(testNumber);
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;반대로 이를 제외한 경우에는 문제가 없다는 것도 알아만 보고 넘어가자.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;여기까지 이해했다면 &lt;i&gt;&lt;b&gt;예시 4)&lt;/b&gt;&lt;/i&gt;에 왜 문제가 없는지 잘 알 것이라고 믿어 의심치 않는다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;4. 정리&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;앞서 &lt;b&gt;클래스와 객체&lt;/b&gt;에 대해서 알아봤으니 이제 클래스를 직접 만들어보기 위해서&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;우선 클래스가 어떻게 구성되어 있는지에 대해서 살펴봤다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;i&gt;&lt;b&gt;클래스는 자바 프로그래밍의 기본 단위&lt;/b&gt;&lt;/i&gt;이기도 한데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;우리가 알고 있던 변수와 메소드들은 모두 클래스에 포함되어 있는 요소인 셈이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이들을 우리는 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;클래스의 멤버&lt;/b&gt;&lt;/span&gt;라고 표현하는데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #8a3db6;&quot;&gt;&lt;b&gt;클래스 안에 선언된 변수와 상수를 통틀어 멤버 필드&lt;/b&gt;&lt;/span&gt;라고 하며,&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;특히 &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;변수는 멤버 변수&lt;/b&gt;&lt;/span&gt;라고 지칭한다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;&lt;b&gt;메소드는 멤버 메소드&lt;/b&gt;&lt;/span&gt;라고 하며 이들 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;i&gt;&lt;b&gt;멤버는 절대 클래스 밖에선 존재할 수 없다.&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #8a3db6;&quot;&gt;&lt;b&gt;멤버 필드&lt;/b&gt;&lt;/span&gt;, &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;멤버 변수&lt;/b&gt;&lt;/span&gt;의 경우에는 클래스 내부에서 이용될 수 있는&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;유효 범위&lt;/b&gt;&lt;/span&gt;가 존재하는데 어디에서 선언되느냐에 따라서 범위가 달라지게 된다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;클래스 상에 선언된 변수는 선언된 클래스 내부 어디에서나 접근이 가능하고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;사용이 가능한데 이를 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;전역 변수&lt;/b&gt;&lt;/span&gt;라고 한다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그리고 클래스 내부의 멤버 메소드 내부에서 선언된 변수는&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;해당 멤버 메소드 내에서만 접근과 사용이 가능하고 멤버 메소드 외에서는 사용할 수 없다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그리고 이 변수를 &lt;span style=&quot;color: #8a3db6;&quot;&gt;&lt;b&gt;지역 변수&lt;/b&gt;&lt;/span&gt;라고 한다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그리고 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;전역 변수&lt;/b&gt;&lt;/span&gt;와 &lt;span style=&quot;color: #009a87;&quot;&gt;&lt;b&gt;멤버 메소드&lt;/b&gt;&lt;/span&gt;는&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;생성되는 시점에 따라서 각각 &lt;span style=&quot;color: #7e98b1;&quot;&gt;&lt;b&gt;클래스 멤버&lt;/b&gt;&lt;/span&gt;, &lt;span style=&quot;color: #409d00;&quot;&gt;&lt;b&gt;인스턴스 멤버&lt;/b&gt;&lt;/span&gt;로 구분할 수 있는데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;변수나 메소드를 선언할 때 앞에 &lt;b&gt;static&lt;/b&gt;을 붙여 선언하면 &lt;span style=&quot;color: #7e98b1;&quot;&gt;&lt;b&gt;클래스 멤버(정적 멤버, Static 멤버)&lt;/b&gt;&lt;/span&gt;로 생성할 수 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #7e98b1;&quot;&gt;&lt;b&gt;클래스 멤버&lt;/b&gt;&lt;/span&gt;는 프로그램이 실행될 때 메모리의 &lt;b&gt;Static 영역&lt;/b&gt;에 올라가서 생성되고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;프로그램이 종료되기 전까지 계속 남아있게 되고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #409d00;&quot;&gt;&lt;b&gt;인스턴스 멤버&lt;/b&gt;&lt;/span&gt;는 인스턴스가 생성되거나 호출되는 시점에서 생성되기 때문에&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;메모리의 &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;Stack 영역&lt;/b&gt;&lt;/span&gt;이나 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;Heap 영역&lt;/b&gt;&lt;/span&gt;에서 생성된다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;마지막으로 &lt;span style=&quot;color: #7e98b1;&quot;&gt;&lt;b&gt;클래스 멤버&lt;/b&gt;&lt;/span&gt;와 &lt;span style=&quot;color: #409d00;&quot;&gt;&lt;b&gt;인스턴스 멤버&lt;/b&gt;&lt;/span&gt;는 생성되는 시점이 다르기 때문에&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;i&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;클래스 변수를 인스턴스 변수 또는 인스턴스 메소드에 포함할 수 없다는 특징도 있다.&lt;/b&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;여기까지 읽으면서 궁금한 점이 많이 생겼을 것이라 생각한다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이제 클래스의 멤버에 대해서 알아봤고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;각 멤버들의 생성되는 시점과 변수의 유효 범위까지 알아봤으니&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;다음번에는 멤버 변수를 초기화하는 방법에 대해서 알아보도록 하자.&lt;/p&gt;</description>
      <category>Java/자바 프로그래밍 기본</category>
      <category>java</category>
      <category>static</category>
      <category>멤버메소드</category>
      <category>멤버변수</category>
      <category>멤버필드</category>
      <category>자바프로그래밍</category>
      <category>전역변수</category>
      <category>지역변수</category>
      <category>클래스</category>
      <category>클래스멤버</category>
      <author>거신</author>
      <guid isPermaLink="true">https://colossus-java-practice.tistory.com/58</guid>
      <comments>https://colossus-java-practice.tistory.com/58#entry58comment</comments>
      <pubDate>Thu, 5 Jan 2023 21:39:30 +0900</pubDate>
    </item>
    <item>
      <title>[자바 프로그래밍 기본] 1. 클래스와 객체</title>
      <link>https://colossus-java-practice.tistory.com/57</link>
      <description>&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;우리가&amp;nbsp;이전&amp;nbsp;글에서&amp;nbsp;객체지향이&amp;nbsp;무엇을&amp;nbsp;의미하는지와&amp;nbsp;장단점에&amp;nbsp;대해서&amp;nbsp;알아봤고 &lt;br /&gt;마지막에서&amp;nbsp;객체지향이&amp;nbsp;지니고&amp;nbsp;있다는&amp;nbsp;특징&amp;nbsp;4가지를&amp;nbsp;포장지를&amp;nbsp;뜯진&amp;nbsp;않고&amp;nbsp;껍데기만&amp;nbsp;잠깐&amp;nbsp;살펴봤었다. &lt;br /&gt;이번&amp;nbsp;시간에는&amp;nbsp;그&amp;nbsp;4가지&amp;nbsp;중에서&amp;nbsp;하나를&amp;nbsp;가져와&amp;nbsp;포장을&amp;nbsp;뜯어서&amp;nbsp;내용물을&amp;nbsp;확인&quot;해&amp;nbsp;보려고&quot;&amp;nbsp;했지만 &lt;br /&gt;그 포장지를 뜯기 위해선 먼저 진행해야 할 선행 퀘스트가 있어서 일단 그 퀘스트부터 처리하고자 한다.&lt;br /&gt;&lt;br /&gt;목표&amp;nbsp;:&amp;nbsp;클래스와&amp;nbsp;객체에&amp;nbsp;대해서&amp;nbsp;정확하게&amp;nbsp;구분하고&amp;nbsp;각각의&amp;nbsp;의미를&amp;nbsp;이해할&amp;nbsp;수&amp;nbsp;있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;클래스를 이용해 객체를 생성하는 방법을 알 수 있다.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;1.&amp;nbsp;클래스와&amp;nbsp;객체&lt;/b&gt; &lt;br /&gt;&lt;br /&gt;&lt;b&gt;객체지향&lt;/b&gt;에 대해서 알아보면서 우리는 &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;객체(Object)&lt;/b&gt;&lt;/span&gt;가 어떤 존재인지 간단하게 알아봤는데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;객체&lt;/b&gt;&lt;/span&gt;를 볼펜을 구성하고 있는 &lt;span style=&quot;color: #f89009;&quot;&gt;&lt;b&gt;각각의 부품&lt;/b&gt;&lt;/span&gt;이라고 했었다. &lt;br /&gt;그리고 그 객체들을 뚝딱뚝딱 조립하여 하나의 프로그램으로 만드는 것을&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;객체지향 프로그래밍&lt;/b&gt;이라고 했다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그렇다면 이제 우리는 그 볼펜 부품을 만들어 내는 존재에 대해서 알아보도록 하자.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;당연하게도 부품이라는 게 하늘에서 뚝 떨어지는 게 아니라면&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;분명 그 부품을 만들어 내는 &lt;i&gt;&lt;b&gt;무언가&lt;/b&gt;&lt;/i&gt;가 존재할 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;자바에서는 그 존재가 바로 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;클래스(Class)&lt;/b&gt;&lt;/span&gt;라는 존재이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;처음 듣는 이름이라서 조금 생소할 수도 있겠지만&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;의외로 클래스는 자바를 공부하는 우리들의 곁에 항상 같이 있는 녀석이기도 하다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;잠깐 머리도 식힐 겸 자바 프로그램의 시작점인 main 함수를 작성해 보자.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;b&gt;예시 1)&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1671201621301&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;public class Test {
    public static void main(String[] args) {
    	System.out.println(&quot;Hello World!&quot;);
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;우리가 자바로 맨 처음에 소스 코드를 작성하면 &lt;i&gt;&lt;b&gt;예시 1)&lt;/b&gt;&lt;/i&gt;과 같이 맨 처음 작성할 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이 소스를 작성하기 위해서 여러분들은&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;자바 프로젝트를 생성하고 소스 폴더 안에 패키지를 만들고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;Test.java 파일을 만들기 위해 새로 만들기로 &lt;b&gt;&quot;Java 클래스&quot;&lt;/b&gt;를 만들었을 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;여기에서 클래스가 우리가 지금 알아보려는 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;클래스&lt;/b&gt;&lt;/span&gt;와 동일한 녀석이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;i&gt;예시 1)&lt;/i&gt;&lt;/b&gt;의 소스 코드에서도 볼 수 있듯이&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;바로 public &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;&quot;class&quot;&lt;/b&gt;&lt;/span&gt; Test와 같이 클래스는 우리와 항상 함께 하고 있는 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;이와 같이 Test.java파일을 생성하는 동작을 우리는 &lt;b&gt;클래스를 생성한다&lt;/b&gt;라고 표현한다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;자 그러면 클래스가&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;b&gt;우리의 자바 프로젝트 안에!&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;b&gt;우리의 가슴속에!&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;b&gt;하나가 되어 살아가고 있다!&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;는 건 알겠는데 그렇다면 걔가 무슨 역할을 하는 녀석인지 찬찬히 살펴보도록 하자.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2. 클래스(Class)&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;간단하게 클래스를 한 마디로 표현하자면&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;객체의 설계도&lt;/b&gt;&lt;/span&gt;이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그러니까 &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;클래스&lt;/b&gt;&lt;/span&gt;가 있어야만 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;객체&lt;/b&gt;&lt;/span&gt;가 만들어질 수 있는 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;클래스에 대한 정보를 찾아보거나 어딘가에서 설명을 들었거나 했을 때&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;무조건 한 번쯤은 봤을 비유가 바로바로 &lt;i&gt;&lt;b&gt;붕어빵과 &lt;/b&gt;&lt;b&gt;붕어빵 &lt;/b&gt;&lt;b&gt;틀&lt;/b&gt;&lt;/i&gt;일 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;간단하게 생각하면 가장 설명하기 쉬운 비유라고 생각하지만&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;내 생각엔 &lt;i&gt;&lt;b&gt;붕어빵과 붕어빵 틀&lt;/b&gt;&lt;/i&gt;의 관계로는 클래스를 설명한다는 게&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;뭔가 채울 수 없는 부분이 존재한다고 생각하기에&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;나는 역시 &lt;b&gt;킹나미 갓펜&lt;/b&gt;을 가지고 설명하도록 하겠다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;s&gt;&lt;i&gt;(사실 힙스터라서 남들이 하는 대로 똑같이 하기 싫은 건 함정)&lt;/i&gt;&lt;/s&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;클래스가 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;객체의 설계도&lt;/b&gt;&lt;/span&gt;라고 했으니&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;다시 말해, 클래스는 볼펜 부품의 설계도인 셈이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;b&gt;그림 1)&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_img_pop03020101.jpg&quot; data-origin-width=&quot;100&quot; data-origin-height=&quot;312&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eb8BGr/btrTQA1K5uJ/w3c07K0LQ9aJAxbM9DSKZ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eb8BGr/btrTQA1K5uJ/w3c07K0LQ9aJAxbM9DSKZ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eb8BGr/btrTQA1K5uJ/w3c07K0LQ9aJAxbM9DSKZ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Feb8BGr%2FbtrTQA1K5uJ%2Fw3c07K0LQ9aJAxbM9DSKZ0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;100&quot; height=&quot;312&quot; data-filename=&quot;edited_img_pop03020101.jpg&quot; data-origin-width=&quot;100&quot; data-origin-height=&quot;312&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;여기 &lt;b&gt;볼펜심&lt;/b&gt;이 하나 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;간단하게 생긴 볼펜심이라도 이걸 만들어내기 위해선&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ef6f53;&quot;&gt;&lt;i&gt;&lt;b&gt;심의 길이는 얼마나 되어야 하고,&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ef6f53;&quot;&gt;&lt;i&gt;&lt;b&gt;잉크를 채워 넣는 부분은 어떤 형태로 만들어야 하며,&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ef6f53;&quot;&gt;&lt;i&gt;&lt;b&gt;잉크는 얼마나 넣고,&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ef6f53;&quot;&gt;&lt;i&gt;&lt;b&gt;볼펜 촉은 또 어떤 모양으로 생겼으며,&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ef6f53;&quot;&gt;&lt;i&gt;&lt;b&gt;잉크는 어떤 방식으로 뽑아내는지&lt;/b&gt;&lt;/i&gt;&lt;/span&gt; 등과 같이&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;다양한 요소들이 설계되어야 한다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그리고 그 설계를 토대로 하나의 볼펜심이 만들어지는 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;반대로 이런 설계 없이는 볼펜심을 만드는 것은 불가능하다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;즉, &lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;객체&lt;/span&gt;&lt;/b&gt;를 생성하기 위해서 꼭 필요한 존재가 바로&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;객체의 설계내용을 담고 있는 &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;클래스&lt;/b&gt;&lt;/span&gt;인 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;객체&lt;/b&gt;&lt;/span&gt;는 &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;클래스&lt;/b&gt;&lt;/span&gt;가 있어야 만들어낼 수 있고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그 클래스 안에는 &lt;b&gt;&lt;i&gt;볼펜심의 길이&lt;/i&gt;&lt;/b&gt;나 &lt;b&gt;&lt;i&gt;잉크의 양&lt;/i&gt;, &lt;i&gt;잉크를 뽑아내는 방식&lt;/i&gt;&lt;/b&gt; 등과 같이&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;객체&lt;/b&gt;&lt;/span&gt;의 &lt;i&gt;&lt;b&gt;각종 정보, 할 수 있는 기능&lt;/b&gt;&lt;/i&gt; 등이 포함되어 있는 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;여기에서 간단하게 코드 형태로 한 번 알아보자.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;b&gt;예시 2)&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1671374471354&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class 볼펜심_설계도 {
    int 볼펜심_길이;
    String 볼펜심_형태;
    int 볼펜심_둘레;
    String 볼펜촉_모양;
    Color 잉크색;
    int 잉크양;

    public void 잉크를_뽑아냄() {
        
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;간단하게 볼펜심을 만들 수 있는 &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;클래스&lt;/b&gt;&lt;/span&gt;를 작성해 보았다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이 클래스 안에는 두 가지 형태로 구성되어 있다는 것을 알 수 있을 텐데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;i&gt;볼펜심_길이&lt;/i&gt;&lt;/b&gt;, &lt;b&gt;&lt;i&gt;볼펜심_형태&lt;/i&gt;&lt;/b&gt;, &lt;b&gt;&lt;i&gt;잉크색&lt;/i&gt;&lt;/b&gt;과 같이 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;변수&lt;/b&gt;&lt;/span&gt;로 되어 있는 항목들과&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;b&gt;잉크를_뽑아냄&lt;/b&gt;&lt;/i&gt;과 같이 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;함수&lt;/b&gt;&lt;/span&gt;로 되어 있는 항목들이 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이런 변수와 함수가 객체의 내용을 구성해서 하나의 객체를 생성할 수 있게 되는 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그렇다면 &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;클래스&lt;/b&gt;&lt;/span&gt;가 대충 어떤 것이며, 어떤 역할을 하며,&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;무엇으로 구성되어 있는지 알아봤으니&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이제는 직접 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;객체&lt;/b&gt;&lt;/span&gt;를 생성하는 방법에 대해서 알아보도록 하자.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;설계도를 어느 정도 읽을 줄 알게 되었으니&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그 설계도를 이용해 해당 물건을 찍어낼 수 있는 기계를 사용해보자는 말이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3. new 연산자와 인스턴스&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;자! 설계도를 읽을 줄 알게 되었으니(만드는 방법은 나중에 더 상세하게)&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이제 이 설계도를 이용해 물건을 찍어낼 수 있는 기계를 한 번 사용해보자.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;볼펜심 설계도&lt;/b&gt;&lt;/span&gt;를 가지고 있더라도&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그에 맞는 재료와 가공할 수 있는 기계가 없다면&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;볼펜심&lt;/b&gt;&lt;/span&gt;을 만드는 것은 불가능할 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그래서 자바에서는 당신이 설계도만 가지고 있다면&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;객체를 만들 수 있도록 재료와 가공할 수 있는 기계를 제공해주고 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;그것이 바로 &lt;span style=&quot;color: #009a87;&quot;&gt;&lt;b&gt;new 연산자&lt;/b&gt;&lt;/span&gt;이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;b&gt;예시 3)&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1671378266460&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;볼펜심_설계도 검은색_볼펜심 = new 볼펜심_설계도();&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;b&gt;예시 3)&lt;/b&gt;&lt;/i&gt;과 같이 &lt;span style=&quot;color: #009a87;&quot;&gt;&lt;b&gt;new 연산자&lt;/b&gt;&lt;/span&gt;를 이용해서 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;검은색_볼펜심&lt;/b&gt;&lt;/span&gt;이라는 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;객체&lt;/b&gt;&lt;/span&gt;를 하나 생성하였다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;복잡한 표현 없이 간단하게 &lt;b&gt;new 클래스명()&lt;/b&gt;으로 객체를 만들 수 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그리고 우리는 이를 클래스의 &lt;span style=&quot;color: #6164c6;&quot;&gt;&lt;b&gt;인스턴스&lt;/b&gt;&lt;/span&gt;를 생성한다고 표현한다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;아니 방금 전까지 &lt;span style=&quot;color: #009a87;&quot;&gt;&lt;b&gt;new 연산자&lt;/b&gt;&lt;/span&gt;를 이용해서 객체를 생성했다고 했는데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;뜬금없이 &lt;b&gt;&lt;span style=&quot;color: #6164c6;&quot;&gt;인스턴스&lt;/span&gt;&lt;/b&gt;를 생성했다니? &lt;span style=&quot;color: #6164c6;&quot;&gt;&lt;b&gt;인스턴스&lt;/b&gt;&lt;/span&gt;는 또 뭔데?&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그렇다면 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;객체&lt;/b&gt;&lt;/span&gt;와 &lt;span style=&quot;color: #6164c6;&quot;&gt;&lt;b&gt;인스턴스&lt;/b&gt;&lt;/span&gt;는 똑같은 말인가?&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;엄연히 따지면 세세한 부분에서 둘은 다른 단어이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;어딘가에선 둘을 혼용해서 설명할 수도 있다고 생각하는데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;적어도 여기에서는 둘을 구분해서 좀 더 정확한 의미로 여러분들에게 전달하고자 한다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;객체&lt;/b&gt;&lt;/span&gt;와 &lt;span style=&quot;color: #6164c6;&quot;&gt;&lt;b&gt;인스턴스&lt;/b&gt;&lt;/span&gt;는 &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;클래스&lt;/b&gt;&lt;/span&gt;를 이용해 생성한 것들을 말한다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이렇게만 본다면 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;객체&lt;/b&gt;&lt;/span&gt;와 &lt;span style=&quot;color: #6164c6;&quot;&gt;&lt;b&gt;인스턴스&lt;/b&gt;&lt;/span&gt;는 동일한 단어라고 생각할 수 있지만&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;여기에는 표현의 방법이 숨겨져 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;b&gt;예시 3)&lt;/b&gt;&lt;/i&gt;에서 만든 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;검은색_볼펜심&lt;/b&gt;&lt;/span&gt;을 가지고 알아보자면&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;검은색_볼펜심&lt;/b&gt;&lt;/span&gt;은 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;객체&lt;/b&gt;&lt;/span&gt;이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그리고 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;검은색_볼펜심&lt;/b&gt;&lt;/span&gt;은 &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;볼펜심_설계도&lt;/b&gt;&lt;/span&gt;의 &lt;span style=&quot;color: #6164c6;&quot;&gt;&lt;b&gt;인스턴스&lt;/b&gt;&lt;/span&gt;이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;여기에서 차이를 느낄 수 있겠는가?&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;바로 클래스와의 관계성의 포함 유무에 따라서 표현하는 방법이 달라지는 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;검은색_볼펜심&lt;/b&gt;&lt;/span&gt; 자체만 가지고 말한다면 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;객체&lt;/b&gt;&lt;/span&gt;라고 표현할 수 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그리고 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;검은색_볼펜심&lt;/b&gt;&lt;/span&gt;을 &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;볼펜심_설계도&lt;/b&gt;&lt;/span&gt;와의 관계를 따진다면&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;검은색_볼펜심&lt;/b&gt;&lt;/span&gt;은 &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;볼펜심_설계도&lt;/b&gt;&lt;/span&gt;의 &lt;b&gt;&lt;span style=&quot;color: #6164c6;&quot;&gt;인스턴스&lt;/span&gt;&lt;/b&gt;라고 표현한다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그럼에도 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;객체&lt;/b&gt;&lt;/span&gt;와 &lt;span style=&quot;color: #6164c6;&quot;&gt;&lt;b&gt;인스턴스&lt;/b&gt;&lt;/span&gt;를 혼용해서 사용한다고 해서 의미가 크게 달라지는 것이 아니기에&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;딱히 혼용한다고 해서 그것이 잘못되었다고 말을 할 수는 없겠지만&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;적어도 필자가 여기에서 작성할 때에는&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;확실하게 구분해서 작성하도록 노력하겠다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;4. 정리&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;우리가 &lt;b&gt;객체지향&lt;/b&gt;에 대해서 알아보면서 &lt;b&gt;객체지향&lt;/b&gt;에서 핵심인 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;객체(Object)&lt;/b&gt;&lt;/span&gt;에 대해서 알아봤고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;객체&lt;/b&gt;&lt;/span&gt;를 생성하는데 필요한 &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;클래스&lt;/b&gt;&lt;/span&gt;에 대해서 자세하게 알아봤다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;클래스&lt;/b&gt;&lt;/span&gt;는 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;객체의 설계도&lt;/b&gt;&lt;/span&gt;라고 표현했는데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그 단어 의미대로 객체를 생성할 때 필요한 요소들을 포함하고 있고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이는 자바에서 &lt;b&gt;변수&lt;/b&gt;와 &lt;b&gt;함수&lt;/b&gt;로 표현하고 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그리고 객체를 생성하기 위해서는 &lt;span style=&quot;color: #009a87;&quot;&gt;&lt;b&gt;new 연산자&lt;/b&gt;&lt;/span&gt;가 필요한데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;new 클래스명()&lt;/b&gt;을 이용해서 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;객체&lt;/b&gt;&lt;/span&gt;를 생성할 수 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그리고 &lt;span style=&quot;color: #009a87;&quot;&gt;&lt;b&gt;new 연산자&lt;/b&gt;&lt;/span&gt;를 이용해서 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;객체&lt;/b&gt;&lt;/span&gt;를 생성하는 것을&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;자바에서는 &lt;span style=&quot;color: #6164c6;&quot;&gt;&lt;b&gt;인스턴스&lt;/b&gt;&lt;/span&gt;를 생성한다라고 표현한다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;객체&lt;/b&gt;&lt;/span&gt;와 &lt;span style=&quot;color: #6164c6;&quot;&gt;&lt;b&gt;인스턴스&lt;/b&gt;&lt;/span&gt;는 큰 의미로는 같은 의미로 사용될 수 있지만&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;클래스&lt;/b&gt;&lt;/span&gt;와의 &lt;b&gt;관계&lt;/b&gt;에 따라서 둘을 명확하게 구분해서 표현할 수 있다.&lt;/p&gt;</description>
      <category>Java/자바 프로그래밍 기본</category>
      <category>java</category>
      <category>JAVA프로그래밍</category>
      <category>new연산자</category>
      <category>객체</category>
      <category>자바</category>
      <category>자바프로그래밍</category>
      <category>클래스</category>
      <author>거신</author>
      <guid isPermaLink="true">https://colossus-java-practice.tistory.com/57</guid>
      <comments>https://colossus-java-practice.tistory.com/57#entry57comment</comments>
      <pubDate>Mon, 19 Dec 2022 03:52:54 +0900</pubDate>
    </item>
    <item>
      <title>[자바 프로그래밍 기본] 0. 서론 (feat. 객체지향 언어)</title>
      <link>https://colossus-java-practice.tistory.com/56</link>
      <description>&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이 블로그에서 대부분 다루는 내용들을 몇 번 읽어본 사람들이라면&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;내용의 배경을 자바라는 언어를 가지고 설명하고 있다는 것을 다들 알고 있을 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;하지만 설명을 자바로 한 것 뿐이지 다른 언어를 사용하고 있거나 배워본 사람들이라면&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;다른 언어들을 가져와 설명하더라도 특정 부분들을 제외하곤 대부분 다 비슷하다는 걸 느낄 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그래서 여기에서는 자바라는 언어와 그나마 직접적으로 관련이 있는 내용들을 다뤄보려고 한다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;다른 카테고리인 &lt;span style=&quot;color: #009a87;&quot;&gt;&lt;b&gt;자바 프로그래밍 기초&lt;/b&gt;&lt;/span&gt;에서는&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;자바로 코딩이나 프로그래밍을 할 때 소스 코드를 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;&quot;작성&quot;&lt;/b&gt;&lt;/span&gt;할 때 유용한 내용들을 다룬다면&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;자바 프로그래밍 기본&lt;/b&gt;&lt;/span&gt;과 &lt;span style=&quot;color: #8a3db6;&quot;&gt;&lt;b&gt;자바 프로그래밍 심화&lt;/b&gt;&lt;/span&gt;에서는&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;다른 사람들이 작성한 자바 소스 코드를 &lt;span style=&quot;color: #f3c000;&quot;&gt;&lt;span style=&quot;color: #409d00;&quot;&gt;&lt;b&gt;&quot;분석&quot;&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;할&lt;/span&gt;&lt;/span&gt; 때&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이게 무슨 의미인지, 왜 이렇게 작성했는지를 이해하는 지식을 전달하는 것에 초점을 맞추려고 한다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;물론 이 글은 자바 프로그래밍을 이제 막 공부하기 시작한 사람과&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;아직 미숙한 사람들을 위해 전공지식처럼 복잡하고 어려운 부분을 가능한 간단하고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;최대한 이해하기 쉽게 작성하는 것이 목표이기 때문에&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이 글을 읽어서 면접 준비를 한다든가 취준을 하는데 사용하는 그런 심오한 일은 삼가해주길 바란다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;본인이 그렇게 이용하겠다면 말리진 않겠지만 지식에서 누락된 부분에 대해선&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그 부분까진 필자가 책임을 질 순 없다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. 객체지향 (Object-oriented)&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;자바에 대해서 공부하다보면 한번쯤은 봤을 법한 단어이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;바로 &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;i&gt;&lt;b&gt;객체지향&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;이라는 단어인데 자바를 설명할 때 꼭 등장하는 단어이기도 하다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그런데 &lt;b&gt;객체지향&lt;/b&gt;이 뭘 말하는걸까?&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;단어 그대로를 파악해보자면&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;b&gt;객체를 지향한다&lt;/b&gt;&lt;/i&gt;는 뜻인데 아니 글쎄 그러니까 그게 뭔데?라고 할 것 이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;좀 더 풀어서 설명하자면&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;&lt;b&gt;프로그래밍을 그냥 하지 말고 객체화해서 좀 만들어라.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;뭐 그런 의미인 셈이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;객체(Object)......&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;자세한 건 뒤에서 차근차근 알아가보도록 하자.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;아무튼 간단하게 설명하자면 &lt;b&gt;객체&lt;/b&gt;라는 걸 만들어서 그걸 가지고 프로그램을 만든다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;라는 말인데 좀 더 이해하기 쉽도록 비유로 이해해보자.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;i&gt;그림 1)&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_img_pop03020102.jpg&quot; data-origin-width=&quot;314&quot; data-origin-height=&quot;351&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bA9DV7/btrTCgumboN/I75MpUch2d3gNbUopTSP81/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bA9DV7/btrTCgumboN/I75MpUch2d3gNbUopTSP81/img.png&quot; data-alt=&quot;사진 출처 : 국립특수교육원 - 볼펜조립&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bA9DV7/btrTCgumboN/I75MpUch2d3gNbUopTSP81/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbA9DV7%2FbtrTCgumboN%2FI75MpUch2d3gNbUopTSP81%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;314&quot; height=&quot;351&quot; data-filename=&quot;edited_img_pop03020102.jpg&quot; data-origin-width=&quot;314&quot; data-origin-height=&quot;351&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;사진 출처 : 국립특수교육원 - 볼펜조립&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;여기에 우리가 흔히 사용하고 있는 모나미 볼펜이 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이 녀석이 우리가 만들려고 하는 &lt;b&gt;결과물&lt;/b&gt;(우리에겐 프로그램)이 되겠다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그런데 너무나도 당연한 이야기겠지만 모나미 볼펜을 하나 만드는데 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;여러 부품&lt;/b&gt;&lt;/span&gt;들이 필요하다는 걸 알고 있을 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;i&gt;그림 2)&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_img_pop03020101.jpg&quot; data-origin-width=&quot;439&quot; data-origin-height=&quot;342&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b2ffPL/btrTzlKsq5R/Exn3R6ZC5N4Uc66P9Y44hK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b2ffPL/btrTzlKsq5R/Exn3R6ZC5N4Uc66P9Y44hK/img.png&quot; data-alt=&quot;사진 출처 : 국립특수교육원 - 볼펜조립&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b2ffPL/btrTzlKsq5R/Exn3R6ZC5N4Uc66P9Y44hK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb2ffPL%2FbtrTzlKsq5R%2FExn3R6ZC5N4Uc66P9Y44hK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;439&quot; height=&quot;342&quot; data-filename=&quot;edited_img_pop03020101.jpg&quot; data-origin-width=&quot;439&quot; data-origin-height=&quot;342&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;사진 출처 : 국립특수교육원 - 볼펜조립&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이렇게 볼펜 하나에 몇 가지의 부품들이 필요하고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이 부품들을 이리저리 조립해서 &lt;b&gt;&lt;i&gt;그림 1)&lt;/i&gt;&lt;/b&gt;의 결과물을 만들어 내는 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;여기에서 우리는 객체라는 녀석을 조금이나마 이해할 수 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;바로 &lt;i&gt;&lt;b&gt;그림 2)&lt;/b&gt;&lt;/i&gt;의 볼펜을 구성하는 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;각각의 부품&lt;/b&gt;&lt;/span&gt;들이&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;객체(Object)&lt;/b&gt;&lt;/span&gt;인 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;&lt;b&gt;뚜껑이라는 객체&lt;/b&gt;&lt;/span&gt;, &lt;span style=&quot;color: #0593d3;&quot;&gt;&lt;b&gt;스프링이라는 객체&lt;/b&gt;&lt;/span&gt;, &lt;span style=&quot;color: #7e98b1;&quot;&gt;&lt;b&gt;볼펜 몸통이라는 객체&lt;/b&gt;&lt;/span&gt; 등을 만들어서&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그 객체들을 뚝딱뚝딱하면 &lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;하나의 모나미 볼펜&lt;/b&gt;이&lt;/span&gt; 되는 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;아마 이 정도만 설명하더라도 객체지향이라는 의미가&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;대충 어떤 의미인지는 이해했으리라 생각한다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그런데 이렇게만 보면 한 가지 의문이 드는 부분이 있을 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;객체지향이 뭔진 좀 알겠다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;i&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;근데 왜 객체지향으로 프로그래밍을 해야됨?&lt;/b&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;어....?&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2. 객체지향 언어의 특징&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;앞에서 &lt;b&gt;객체지향&lt;/b&gt;이 어떤 의미인지에 대해서 간단하게 알아봤지만&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그래서 그걸 왜 써야하는지에 대해선 아직까지 물음표로 남아있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그래서 우리는 다시 모나미 볼펜을 조립하는 과정을 생각해 볼 필요가 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;i&gt;그림 3)&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b2ffPL/btrTzlKsq5R/Exn3R6ZC5N4Uc66P9Y44hK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b2ffPL/btrTzlKsq5R/Exn3R6ZC5N4Uc66P9Y44hK/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;439&quot; data-origin-height=&quot;342&quot; data-filename=&quot;edited_img_pop03020101.jpg&quot; style=&quot;width: 58.245%; margin-right: 10px;&quot; data-widthpercent=&quot;58.93&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b2ffPL/btrTzlKsq5R/Exn3R6ZC5N4Uc66P9Y44hK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb2ffPL%2FbtrTzlKsq5R%2FExn3R6ZC5N4Uc66P9Y44hK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;439&quot; height=&quot;342&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bA9DV7/btrTCgumboN/I75MpUch2d3gNbUopTSP81/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bA9DV7/btrTCgumboN/I75MpUch2d3gNbUopTSP81/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;314&quot; data-origin-height=&quot;351&quot; data-filename=&quot;edited_img_pop03020102.jpg&quot; data-widthpercent=&quot;41.07&quot; style=&quot;width: 40.5922%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bA9DV7/btrTCgumboN/I75MpUch2d3gNbUopTSP81/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbA9DV7%2FbtrTCgumboN%2FI75MpUch2d3gNbUopTSP81%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;314&quot; height=&quot;351&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;사진 출처 : 국립특수교육원 - 볼펜조립&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어서 모나미 볼펜을 만드는 방법이 왼쪽 그림과 같이 부품을 조립해서 만드는 것이 아니라&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;3D 프린터같은 걸로 볼펜을 모델링해서 한번에 뽑아낸다고 상상해보자.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;만드는 과정이야 달라지겠지만 결과물은 비슷하게 나올 것이다.(잉크 뭐 이런 거 둘째치고)&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;작업 명령을 내리면 볼펜심만들고 스프링만들고 몸통만들고 뚜껑만들고 뭐 이런 식으로 진행해서&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;하나의 완성품이 만들어진다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그런데 볼펜 회사 사장이 정신이 나갔는지 지금까지 &lt;b&gt;검은색 볼펜&lt;/b&gt;만 잘 만들고 있었는데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;볼펜의 &lt;b&gt;다향성&lt;/b&gt;을 추구하기 위해 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;빨간색 볼펜&lt;/b&gt;&lt;/span&gt;과 &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;파란색 볼펜&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;을&lt;/span&gt;&lt;/span&gt;&amp;nbsp;만들라고 지시를 내렸다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그렇다면 작업자는 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;빨간색 볼펜&lt;/b&gt;&lt;/span&gt;과 &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;파란색 볼펜&lt;/b&gt;&lt;/span&gt;은 어떻게 만들어야 할까?&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;지금 3D 프린터로 볼펜을 만들고 있는 상황에선&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;어쩔 수 없이 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;빨간색 볼펜&lt;/b&gt;&lt;/span&gt;과 &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;파란색 볼펜&lt;/b&gt;&lt;/span&gt;을 각각 새로 모델링을 해서&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;처음부터 다시 뽑아내야 할 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;왜? 볼펜 하나를 만드는 공정이 그러하니까.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;거기다 이제는 &lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;검은색 볼펜&lt;/b&gt;&lt;/span&gt;의 모델링과 공정 방식은 쓸모가 없어졌다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이 상황만 놓고 봤을 때 우리는 뭔가 참신한 아이디어를 떠올리게 될 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;&lt;i&gt;'아니 볼펜심만 따로 만들어서 색만 다르게 하면 간단한 거 아님?'&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이걸 여러분들이 당연하게 생각해냈다면&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;여러분들은 &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;객체지향적인 사고&lt;/b&gt;&lt;/span&gt;를 하고 있다고 할 수 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;어쩌면 당연한 생각이라고 말할 수도 있겠다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;즉, 저 볼펜 하나를 만드는데 우리가 한번에 만들어내는 것이 아니라&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;각 &lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;부품(객체)&lt;/b&gt;&lt;/span&gt;별로 만들었다면&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;다른 색의 볼펜을 만드는 과정이 그렇게 번거롭지 않았을 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이것이 바로 우리가 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;객체지향 프로그래밍&lt;/b&gt;&lt;/span&gt;을 하고 있는 이유이기도 하다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;여기에서 객체지향의 특징과 장단점을 파악할 수 있는데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;먼저 장단점부터 간단하게 살펴보자면&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;장점)&lt;/b&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;1. 재사용성&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;우리가 다른 색의 볼펜을 만들어야 하더라도 디자인이 바뀌지 않는 이상&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;각 부품의 형태 자체는 바뀌지 않기 때문에 여러 종류의 볼펜을 만들 때에 얼마든지 재사용할 수 있다.&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;심지어 볼펜심도 심에 들어가는 잉크의 종류는 달라지더라도&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;볼펜심의 형태 자체는 바뀌지 않기 때문에 역시 그대로 사용할 수 있다.&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;2. 생산성&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;새로운 색의 볼펜 만들겠다고 모델링부터 새로 해야하는 불상사가 사라진다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;우리는 다른 색의 볼펜심으로만 교체하면 얼마든지 다른 색의 볼펜을 만들어낼 수 있다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;3. 자연스러운 모델링&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;'볼펜심 색깔만 다르게 하면 되는거 아님?'&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;우리가 일상에서 당연하게 생각하는 것처럼 자연스럽게 구현할 수 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;4. 유지보수의 우수성&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;볼펜 하나를 만들 때 뚜껑이 잘못 만들어지면 우리는 뚜껑만 따로 다시 만들면 된다.&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;뚜껑을 잘못 만들었다고 볼펜 전체를 다시 만들어야 하는 불상사는 존재하지 않는다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;단점)&lt;/b&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;&lt;i&gt;1. 개발 속도가 느림&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;근데 문제는 저렇게 볼펜을 부품화해서 만들기 위해선 일단 설계 단계에서&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;저렇게 계획하고 만들어야 하는데 저게 어디 하늘에서 떨어져서 뚝딱 만들어지는 건 아니니까....&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;저 부품들을 저 형태로 설계한 사람들은 천재가 아닐까?&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;i&gt;&lt;b&gt;2. 실행 속도가 느림&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;아니 3D 프린터로 한번에 쫙 뽑으면 볼펜 하나 나오는데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;저건 부품들 다 만들어서 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;&quot;조립&quot;&lt;/b&gt;&lt;/span&gt;까지 해야되네???&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;i&gt;&lt;b&gt;3. 높은 난이도&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;설계&lt;/b&gt;&lt;/span&gt;하는 것도 시간이 오래 걸리고 아 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;조립&lt;/b&gt;&lt;/span&gt;도 해야되고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;부품&lt;/b&gt;&lt;/span&gt;은 왜 또 저렇게 많은건지 참.... 이 부품은 어디에 쓰이는고??&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이렇듯 장단점이 존재하지만 그&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;럼에도 더 효과적인 방식이기에&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;현재 등장하고 있는 개발 언어들이 객체지향의 형태를 띄고 있는 것도 그러한 이유이다.&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;이제부터_정말_객체지향_뿐이야.png&quot; data-origin-width=&quot;380&quot; data-origin-height=&quot;390&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/blMtlG/btrTy2K833K/ntahkAr3MwbXl8ia5YVdkk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/blMtlG/btrTy2K833K/ntahkAr3MwbXl8ia5YVdkk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/blMtlG/btrTy2K833K/ntahkAr3MwbXl8ia5YVdkk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FblMtlG%2FbtrTy2K833K%2FntahkAr3MwbXl8ia5YVdkk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;380&quot; height=&quot;390&quot; data-filename=&quot;이제부터_정말_객체지향_뿐이야.png&quot; data-origin-width=&quot;380&quot; data-origin-height=&quot;390&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그리고 객체지향의 특징을 간단하게 살펴보면&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;상속(Inheritance)&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;캡슐화(Encapsulation)&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;다형성(Polymorphism)&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;추상화(Abstraction)&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이렇게 4가지로 나타낼 수 있는데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;자세한 내용은 다음 글에서 더 자세하게 살펴보도록 하자.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;300px-More_details_be_omitted.jpg&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;381&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bQuwIv/btrTAB6XYXt/LHhzIkkGDbRTlWFJbhK8uk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bQuwIv/btrTAB6XYXt/LHhzIkkGDbRTlWFJbhK8uk/img.jpg&quot; data-alt=&quot;다음 글에서 만나자.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bQuwIv/btrTAB6XYXt/LHhzIkkGDbRTlWFJbhK8uk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbQuwIv%2FbtrTAB6XYXt%2FLHhzIkkGDbRTlWFJbhK8uk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;381&quot; data-filename=&quot;300px-More_details_be_omitted.jpg&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;381&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;다음 글에서 만나자.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>Java/자바 프로그래밍 기본</category>
      <category>객체지향</category>
      <category>객체지향언어</category>
      <category>자바</category>
      <category>자바프로그래밍</category>
      <category>프로그래밍</category>
      <author>거신</author>
      <guid isPermaLink="true">https://colossus-java-practice.tistory.com/56</guid>
      <comments>https://colossus-java-practice.tistory.com/56#entry56comment</comments>
      <pubDate>Wed, 14 Dec 2022 02:36:57 +0900</pubDate>
    </item>
    <item>
      <title>[Chapter 7 컴퓨터 구조] 3. 2진법의 음수 표현 (3편 - 심화 내용)</title>
      <link>https://colossus-java-practice.tistory.com/55</link>
      <description>&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;앞에서 다양한 음수 표현 방법을 알아보면서&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;2의 보수가 컴퓨터에서 음수를 표현하는데 얼마나 잘 어울리는지에 대해서 이해했으리라 믿는다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이번 편에서는 앞서 미처 설명하지 못한 부분들에 대해서&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;언급하고 좀 더 자세히 설명할만한 부분들에 대해서 알아보는 편으로 작성한다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. 컴퓨터는 덧셈 밖에 할 줄 모른다.&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;1편에서도 언급했지만 컴퓨터의 &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;산술 논리 장치(ALU)&lt;/b&gt;&lt;/span&gt;는 가산기로 구성되어 있고 &lt;b&gt;덧셈만 연산할 수 있는 기계&lt;/b&gt;이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그렇기 때문에 뺄셈이라는 로직 자체를 구현한 것이 아닌&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;음수를 표현하는 방식을 채택함으로서 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;덧셈만으로 뺄셈도 할 수 있게 된 것이다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이러면 논리회로를 설계함에 있어서도 복잡 다양한 논리회로 구조보단&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;조금이라도 더 단순한 논리회로 설계가 가능&lt;/b&gt;한 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;이것이 수학에서의 보수라는 개념으로 컴퓨터에서 음수를 표현하게 된 이유이며,&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;그 중에서도 가장 효과적인 2의 보수로 음수를 표현하게 된 것이다.&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2. &lt;span style=&quot;color: #006dd7;&quot;&gt;보수&lt;/span&gt;의 의미를 좀 더 명확하게&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;2편에서 소개한 보수의 정의는 사실 많은 부분을 함축한 상태라서&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;여러 부분에서 가려져 있는 것들이 있어, 이 기회에 조금이라도 더 자세하게 알아보고자 한다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;물론 필자도 지식이 부족하여 여러 군데에서 십시일반 정보를 모으고 정리해서 쓰는 것이라&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;두서없이, 부족한 부분 등이 있을 수도 있으니 이해해주길 바란다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;일단 본론으로 들어가기 전에 아래의 블로그의 글을 꼭 한 번 정독해주길 추천한다.&lt;/i&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;이번에 보수 표현과 관련해서 정보를 찾던 중에 설명이 잘 된 글을 발견해서 분명히 도움이 될 것이라고 생각한다.&lt;/i&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://fotc.tistory.com/entry/%EC%9D%8C%EC%88%98%EC%9D%98-%EB%B3%B4%EC%88%98%ED%91%9C%ED%98%84&quot;&gt;https://fotc.tistory.com/entry/%EC%9D%8C%EC%88%98%EC%9D%98-%EB%B3%B4%EC%88%98%ED%91%9C%ED%98%84&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1663293932345&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;음수의 보수표현&quot; data-og-description=&quot;보수란? 보충수(數)이다. 차량 냉각수의 수위가 낮다면? 냉각수를 보충해 준다. 숫자값이 부족하다면 숫자를 보충해주는 것이다. 암산으로 더하거나 뺄 때 사용한다. 왜? 편하니까. 15 - 7 = 10 -7 +5 &quot; data-og-host=&quot;fotc.tistory.com&quot; data-og-source-url=&quot;https://fotc.tistory.com/entry/%EC%9D%8C%EC%88%98%EC%9D%98-%EB%B3%B4%EC%88%98%ED%91%9C%ED%98%84&quot; data-og-url=&quot;https://fotc.tistory.com/entry/%EC%9D%8C%EC%88%98%EC%9D%98-%EB%B3%B4%EC%88%98%ED%91%9C%ED%98%84&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/b4CqRd/hyPMU30rQm/CnGuBlKT6ecCjoHtg9zMok/img.png?width=529&amp;amp;height=163&amp;amp;face=0_0_529_163,https://scrap.kakaocdn.net/dn/br4xbD/hyPMUXgpfr/JtoKHYQHhS7EGkHDaANe4K/img.png?width=529&amp;amp;height=163&amp;amp;face=0_0_529_163,https://scrap.kakaocdn.net/dn/dU1uRz/hyPN5CSSo5/jImeSOo3ey87fu1pq8xPUK/img.png?width=1487&amp;amp;height=873&amp;amp;face=0_0_1487_873&quot;&gt;&lt;a href=&quot;https://fotc.tistory.com/entry/%EC%9D%8C%EC%88%98%EC%9D%98-%EB%B3%B4%EC%88%98%ED%91%9C%ED%98%84&quot; data-source-url=&quot;https://fotc.tistory.com/entry/%EC%9D%8C%EC%88%98%EC%9D%98-%EB%B3%B4%EC%88%98%ED%91%9C%ED%98%84&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/b4CqRd/hyPMU30rQm/CnGuBlKT6ecCjoHtg9zMok/img.png?width=529&amp;amp;height=163&amp;amp;face=0_0_529_163,https://scrap.kakaocdn.net/dn/br4xbD/hyPMUXgpfr/JtoKHYQHhS7EGkHDaANe4K/img.png?width=529&amp;amp;height=163&amp;amp;face=0_0_529_163,https://scrap.kakaocdn.net/dn/dU1uRz/hyPN5CSSo5/jImeSOo3ey87fu1pq8xPUK/img.png?width=1487&amp;amp;height=873&amp;amp;face=0_0_1487_873');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;음수의 보수표현&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;보수란? 보충수(數)이다. 차량 냉각수의 수위가 낮다면? 냉각수를 보충해 준다. 숫자값이 부족하다면 숫자를 보충해주는 것이다. 암산으로 더하거나 뺄 때 사용한다. 왜? 편하니까. 15 - 7 = 10 -7 +5&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;fotc.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;앞서 &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;보수&lt;/b&gt;&lt;/span&gt;란&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;b&gt;&quot;보충해주는 수, 합해서 특정 숫자를 채우게 하는데 필요한 수&quot;&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;라고 정의했는데 우리는 여기에서 수학적으로 좀 더 자세하게 알아볼 필요가 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;위키백과에서 &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;보수 (수학)&lt;/b&gt;&lt;/span&gt;에 대해서 검색해보면&lt;/p&gt;
&lt;pre id=&quot;code_1663293932346&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;보수를 이용한 계산법

주판을 이용한 덧셈, 뺄셈을 할 때 5의 보수 혹은 10의 보수의 개념이 사용된다.
예를 들면 4+2를 계산할 때 +2를 4에 대한 5의 보수 1을 먼저 더한 뒤 1을 추가로 더했다고 이해할 수 있다.
즉, 처음의 수 4에 5의 보수 1을 더해서 5를 만든 뒤 나머지 1을 더해서 6이 된다고 간주할 수 있다.

이는 뺄셈일 때도 마찬가지인데, 7-3이라는 연산에서도 7=5+2로 나눌 수 있고,
2-3은 결과가 음수가 나오기에 우선 5에 대한 3의 보수 2를 구한 뒤 남은 숫자 2를 더한 값 4를 결과로 유도할 수 있다.&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이런 부분을 확인할 수 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;우리가 눈여겨 볼 부분은 뺄셈을 하는 부분인데 글로만 읽었을 때는 잘 이해가 안 될 수도 있으니&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이번에도 예시를 통해서 알아보자.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;b&gt;예시 1)&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;10진수를 바탕으로 &lt;b&gt;8 - 3&lt;/b&gt;을 계산해보자.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그런데 뺄셈이 아니라 덧셈만으로 결과를 도출해 볼건데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;여기에 &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;보수&lt;/b&gt;&lt;/span&gt;라는 개념을 도입하면 뺄셈을 덧셈으로 바꿔서 계산이 가능해진다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;먼저 -3을 바꿀건데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;=&amp;gt; +10 -3 -10&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;으로 바꿀 수 있을텐데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;보수&lt;/b&gt;&lt;/span&gt;로 변환하는 방법을&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&quot;어떤 수에 합해서 해당 진법의&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;밑수&lt;/span&gt;로 만듦&quot;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;을 바탕으로 밑수인 10을 이용해 위의 식으로 변환한 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;여기에서 -10은 일단 제쳐두고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;b&gt;예시 1)&lt;/b&gt;&lt;/i&gt;을 변환하면&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;8 + (10 - 3)&lt;/b&gt;으로 바꿀 수 있고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;8 + 7 = 15&lt;/b&gt;로 결과를 낼 수 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그리고 잠시 제쳐두었던 -10까지 계산해주면&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;15 - 10 = 5&lt;/b&gt;로&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;8 - 3 = 8 + (10 - 3) - 10 = 5&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;라는 결과를 얻을 수 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;여기에서 &lt;b&gt;10 - 3 - 10&lt;/b&gt;이라는 식을 통해 보수의 공식을 얻을 수 있는데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;$$&amp;nbsp;a^{n}-b-a^{n}&amp;nbsp;$$&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;(a : 밑수, n : b보다 큰 자릿 수, b : 보수를 취하는 수)&lt;/i&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;로 표현할 수 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그런데 위의 공식과 &lt;i&gt;&lt;b&gt;예시 1)&lt;/b&gt;&lt;/i&gt;의 풀이를 찬찬히 살펴보면&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2의 보수&lt;/b&gt;가 어떻게 계산이 되는건지 왜 계산 후에 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;캐리 값&lt;/b&gt;&lt;/span&gt;을 무시할 수 있는지 이제는 이해가 될 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;우리가 &lt;b&gt;2의 보수&lt;/b&gt;를 알아볼 당시에 보수를 이렇게 정의한 적이 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&quot;어떤 수에 합해서 (해당 진법의 밑수로 만들어&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&quot;오버플로우&quot;&lt;/span&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;를 시킨 후) 0으로 만들어주는 수&quot;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이는 &lt;b&gt;$$ a^{n}-b $$&lt;/b&gt;, 즉, 10 - 3을 통해 3의 10의 보수를 구한 것이고,&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;보수&lt;/b&gt;&lt;/span&gt;를 이용해 계산한 후 다시 - 10을 함으로서 자릿 수를 넘어가는 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;캐리 값&lt;/b&gt;&lt;/span&gt;이 발생하더라도&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;자연스럽게 무시될 수 있는 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그리고 또 한 가지, 위의 &lt;b&gt;&lt;i&gt;인용글&lt;/i&gt;&lt;/b&gt;에서 언급된 내용으로&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;지금까지 보수를 말할 때 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;&quot;3의 10의 보수를 7&quot;&lt;/b&gt;&lt;/span&gt;이라고 표현했는데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;더 정확히는&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt; &quot;-3의 10의 보수는 7&quot;&lt;/b&gt;&lt;/span&gt;이라고 표현해야 한다는 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;인터넷에서 &lt;b&gt;2의 보수&lt;/b&gt;와 관련해서 검색하다보면 한 번 쯤은 볼 수 있는 그림이 있는데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;b&gt;그림 1)&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;그림1.png&quot; data-origin-width=&quot;885&quot; data-origin-height=&quot;794&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FWskj/btrMaImzGlP/J5n3IUFzOHUFYMSzuwfyw1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FWskj/btrMaImzGlP/J5n3IUFzOHUFYMSzuwfyw1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FWskj/btrMaImzGlP/J5n3IUFzOHUFYMSzuwfyw1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFWskj%2FbtrMaImzGlP%2FJ5n3IUFzOHUFYMSzuwfyw1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;471&quot; height=&quot;423&quot; data-filename=&quot;그림1.png&quot; data-origin-width=&quot;885&quot; data-origin-height=&quot;794&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;보통은 원으로 다들 그렸을 테지만 필자는 귀차니즘으로 인해 마름모로 그렸다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;어쨌든 위의 &lt;i&gt;&lt;b&gt;그림 1)&lt;/b&gt;&lt;/i&gt;을 보면 &lt;b&gt;1000&lt;/b&gt; (2)부터 &lt;b&gt;1111&lt;/b&gt; (2)까지 음수로 표현하고 있고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이는 각각의 보수관계를 시각적으로 표시해주고 있는 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;표로 바꿔보면 다음과 같다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;그림2.png&quot; data-origin-width=&quot;1711&quot; data-origin-height=&quot;140&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ptwPj/btrMeP69LHP/OYCyNJgyvpiNycWajQctB0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ptwPj/btrMeP69LHP/OYCyNJgyvpiNycWajQctB0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ptwPj/btrMeP69LHP/OYCyNJgyvpiNycWajQctB0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FptwPj%2FbtrMeP69LHP%2FOYCyNJgyvpiNycWajQctB0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1711&quot; height=&quot;140&quot; data-filename=&quot;그림2.png&quot; data-origin-width=&quot;1711&quot; data-origin-height=&quot;140&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;4비트의 수로 표현했기에 밑수는 16이 되고 이를 가지고 음수로 바꾼 후,&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;MSB&lt;/b&gt;&lt;/span&gt;가 0을 양수, 1을 음수로 표현하면 &lt;i&gt;&lt;b&gt;그림 1)&lt;/b&gt;&lt;/i&gt;과 매칭이 되는 것을 알 수 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그렇다면 보수를 말할 때 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;3의 보수&lt;/b&gt;&lt;/span&gt;가 아니라 &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;-3의 보수&lt;/b&gt;&lt;/span&gt;라고 하는 것이 정확하단 이유는&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;컴퓨터에서는 음수를 표현할 수 없기 때문에 보수라는 개념으로 양수를 음수처럼 사용하고 있는 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;다시 말해, 양수의 보수표현은 할 수 없고 음수의 보수 표현만이 존재한다는 뜻이기도 하다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;물론 컴퓨터 구조에서 말이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3. 마무리&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;세 편의 긴글을 보면 조금은 정리되지 않고 장황하게 써놓은 것처럼 보일 수도 있을 것 같다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;물론 나도 여느 다른 글들처럼&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;1의 보수로 어떻게 바꾸고, 2의 보수로 어떻게 바꾸는지에 대해서만 적었으면 편했겠지만&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이번 글을 작성하면서 가장 먼저 생각했던 부분은&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;하나의 내용을 다루더라도 시험공부마냥 핵심 내용만 전달하는 것이 아니라&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;정의에 대해서도 정확하게 상세한 내용을 전달함&lt;/b&gt;과 동시에&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;함축되어 있거나 복잡하게 되어 있는 부분을 최대한 풀어내고&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;'왜 이렇게 바뀌는건지', '왜 이런 의미인지', '왜 사용하는 것인지'&lt;/b&gt;&lt;/span&gt;처럼&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;의문점이 생길만한 부분을 최대한 많이 다뤄서&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;잘 모르는 사람이 이 글을 읽었을 때 개념을 이해하는데 조금이라도 더 도움이 되고 기억에 남았으면 하는 점이었다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그러다보니 내용이 장황하게 길어진 부분도 있었고 어떨 때는 두서없이 진행된 부분도 있을 것이라 생각한다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그리고 필자도 지식이 부족하다보니 수많은 정보들을 나름대로 정리하고 개인적인 생각으로 해석한 부분도 있어서&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;틀린 부분도 있지 않을까하는 걱정도 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;(오히려 내 스스로 공부를 더 많이 하게 된 것 같아서 그런 부분에서 위안을 삼고 있다.)&lt;/i&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그렇다해도 &lt;b&gt;2진법의 음수표현, 1의 보수, 2의 보수&lt;/b&gt;를 검색해서 우연히 들어온 사람이&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이 글을 읽고 나서 머릿 속에서 조금이라도 정리가 잘 되어서&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;더 많은 지식을 얻어갔으면 하는 바람이 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;끝.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;※ 혹시라도 잘못된 내용이나 부족한 부분, 또는 의문이 드는 부분이 있다면&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;댓글 등으로 알려주시면 수정 및 보강할 수 있도록 노력하겠습니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;부족한 글 읽어주셔서 감사합니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;인용 출처 : &lt;a href=&quot;https://fotc.tistory.com/entry/%EC%9D%8C%EC%88%98%EC%9D%98-%EB%B3%B4%EC%88%98%ED%91%9C%ED%98%84&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://fotc.tistory.com/entry/%EC%9D%8C%EC%88%98%EC%9D%98-%EB%B3%B4%EC%88%98%ED%91%9C%ED%98%84&lt;/a&gt;&lt;/p&gt;</description>
      <category>프로그래밍 기본 지식/Chapter 7 컴퓨터 구조</category>
      <category>1의보수</category>
      <category>2의보수</category>
      <category>2진법의음수표현</category>
      <category>컴퓨터구조</category>
      <author>거신</author>
      <guid isPermaLink="true">https://colossus-java-practice.tistory.com/55</guid>
      <comments>https://colossus-java-practice.tistory.com/55#entry55comment</comments>
      <pubDate>Fri, 16 Sep 2022 15:46:16 +0900</pubDate>
    </item>
    <item>
      <title>[Chapter 7 컴퓨터 구조] 2. 2진법의 음수 표현 (2편 - 1의 보수, 2의 보수)</title>
      <link>https://colossus-java-practice.tistory.com/54</link>
      <description>&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;1편에서는 2진수를 음수로 표현하는 방법 중 부호 절댓값에 대해서 간단하게 알아봤다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;2편에서는 보수라는 개념을 통해서 1의 보수와 2의 보수를 표현하는 방법,&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;2의 보수로 2진수를 음수로 표현하는 방법이 효과적인 이유를 설명한다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;목표 : 보수의 개념을 이해하고 1의 보수와 2의 보수를 이용해 음수로 변환 후 음수 연산을 할 수 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. 보수의 개념&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;1편에서 부호 절댓값에 대해서 알아봤는데 음수로 변환하는 방법은 간단하지만&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그에 따른 단점이 있는 것을 알 수 있었다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;결국 우리와 함께 갈 수 없었던 부호 절댓값을 뒤로하고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;우리 앞에 등장한 녀석이 바로 &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;보수&lt;/b&gt;&lt;/span&gt;라는 개념이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;생소한 단어일 수도 있는데 수학에서 등장하는 용어인데 수학적 의미로는&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;i&gt;&lt;b&gt;&quot;보충해주는 수, 합해서 특정 숫자를 채우게 하는데 필요한 수&quot;&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;라는 뜻인데 이를 컴퓨터 공학에서 보면&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&quot;어떤 수에 합해서 해당 진법의 &lt;span style=&quot;color: #ee2323;&quot;&gt;밑수&lt;/span&gt;로 만들어 주는 수&quot;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;라는 복잡한 의미로 설명할 수 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;좀 더 풀어서 설명하자면&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;10진법을 기준으로 예를 들자면&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;3이라는 숫자의 보수는 더했을 때 10진법의 &lt;b&gt;밑수인 10&lt;/b&gt;으로&amp;nbsp;만들어주는 수인&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;7&lt;/b&gt;&lt;/span&gt;이 3의 보수가 되는 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이를 &lt;b&gt;10의 보수&lt;/b&gt;라고 표현할 수 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;사실 조금 더 수학적인 부분에서 자세히 설명하면 좋은 부분이 있으나&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;글이 길어질 수도 있고 지금은 우리가 필요한 부분을 중점적으로 알아가 보자.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;보수&lt;/b&gt;&lt;/span&gt;라는 수학적 개념을 간단하게 알아봤으니 이제 본격적으로 &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;1의 보수&lt;/b&gt;&lt;/span&gt;와 &lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;2의 보수&lt;/span&gt;&lt;/b&gt;를 알아보도록 하자.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2. 1의 보수&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;우리는 2진법을 사용하고 0과 1만을 사용하기 때문에&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;보수&lt;/b&gt;&lt;/span&gt;를 이용하는 데 있어서 좀 더 간편하게 이해할 수 있다는 장점이 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그런데 &lt;b&gt;1의 보수&lt;/b&gt;는 무엇이며, &lt;b&gt;2의 보수&lt;/b&gt;는 무엇이냐 하면&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;일반적으로 &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;n진법에서의 보수&lt;/b&gt;&lt;/span&gt;는 &lt;b&gt;(n-1)의 보수, n의 보수&lt;/b&gt; 이렇게 2가지로 사용할 수 있다는 특징이 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그렇기 때문에 &lt;b&gt;2진법에서는 1의 보수와, 2의 보수가 존재하고 있는 것&lt;/b&gt;이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1의 보수&lt;/b&gt;는 앞의 보수 개념을 이용하면 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;어떤 수를 더했을 때 1이 되게 해주는 수&lt;/b&gt;&lt;/span&gt;를 말하는 것일 테고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;2진법에서는 0과 1만 존재하므로 두 수가 각각의 &lt;b&gt;1의 보수&lt;/b&gt;가 된다는 것을 유추할 수 있을 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;간단히 말해 &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;1 -&amp;gt; 0, 0 -&amp;gt; 1로&lt;/b&gt;&lt;/span&gt; 바꿔주기만 하면 된다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;b&gt;예시 1)&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;0011 1001&lt;/b&gt; (2)&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;1100 0110&lt;/b&gt; (2) &amp;lt;- &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;1의 보수&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;b&gt;예시 1)&lt;/b&gt;&lt;/i&gt;과 같이 단순히 0과 1을 바꿔주기만 하면 되기 때문에 간단하게 &lt;b&gt;1의 보수&lt;/b&gt;를 구할 수 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;※ 다른 곳에서 1의 보수의 설명에서 대부분 뺄셈식도 보여주면서 설명을 하는데 여기에서는&lt;/i&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;뺄셈식은 '가능하면' 포함하지 않고 설명하려고 한다.&lt;/i&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그러면 이제 &lt;b&gt;1의 보수&lt;/b&gt;를 구할 수 있게 되었으니 연산을 통해서 확인해보자.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;0011 1001&lt;/b&gt; (2)는 10진수로 &lt;b&gt;57&lt;/b&gt; (10)이고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이에 &lt;b&gt;1의 보수&lt;/b&gt;는&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;1100 0110&lt;/b&gt; (2)로 표현할 수 있고 &lt;b&gt;-57&lt;/b&gt; (10)이라는 것을 알 수 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;여기에 &lt;b&gt;88&lt;/b&gt; (10)을 더해보자.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;b&gt;예시 2)&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;1100 0110 &lt;/b&gt;(2)&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;0101 1000&lt;/b&gt; (2)&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 34px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style4&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 5.55555%; text-align: center;&quot;&gt;-57&lt;/td&gt;
&lt;td style=&quot;width: 5.55555%; text-align: center; height: 17px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 5.55555%; text-align: center;&quot;&gt;88&lt;/td&gt;
&lt;td style=&quot;width: 5.55555%; text-align: center; height: 17px;&quot;&gt;&lt;b&gt;+&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 17px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이렇게 연산을 하면 자릿수에서&amp;nbsp;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;오버플로우가 발생한&lt;/span&gt;&lt;/b&gt;&amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;캐리 값&lt;/b&gt;&lt;/span&gt;이 발생하게 된다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;일단 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;캐리 값&lt;/b&gt;&lt;/span&gt;을 무시하고 결괏값만 보면&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;0001 1110&lt;/b&gt; (2)로 &lt;b&gt;30&lt;/b&gt; (10)&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이 나오는데 정확한 값인 31에서 1이 모자란 결과가 나온다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;여기에서 바로&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;&amp;nbsp;캐리 값&lt;/b&gt;&lt;/span&gt;을 결괏값에 더해주면 된다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그러면 최종 결괏값은&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 17px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;31&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;31&lt;/b&gt; (10)이 도출되는 것을 알 수 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;정리하자면 &lt;b&gt;1의 보수&lt;/b&gt;로 인해서 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;캐리 값&lt;/b&gt;&lt;/span&gt;이 발생했으므로 연산된 결괏값에 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;캐리 값&lt;/b&gt;&lt;/span&gt;을 더해주면 되는 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그렇다면 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;캐리 값&lt;/b&gt;&lt;/span&gt;이 발생하지 않는 경우도 있을까?&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;아래의 예시를 보자.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;b&gt;예시 3)&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;1100 0110&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;(2)&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;0000 1010&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;(2)&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 34px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style4&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 5.55555%; text-align: center;&quot;&gt;-57&lt;/td&gt;
&lt;td style=&quot;width: 5.55555%; text-align: center; height: 17px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 5.55555%; text-align: center;&quot;&gt;10&lt;/td&gt;
&lt;td style=&quot;width: 5.55555%; text-align: center; height: 17px;&quot;&gt;&lt;b&gt;+&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 17px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;위에서 연산된 결과는 &lt;b&gt;MSB가 1이므로&lt;/b&gt; 부호는 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;- (마이너스)&lt;/b&gt;&lt;/span&gt;이므로 보수로 되어 있다는 것을 알 수 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;따라서 &lt;b&gt;1의 보수&lt;/b&gt;로 바꾸면&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center;&quot;&gt;47&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;47&lt;/b&gt; (10)이 되는 것을 확인할 수 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;마지막으로 원래 결과의 부호가 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;-&lt;/b&gt;&lt;/span&gt; 였으므로&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;최종 결과는 &lt;b&gt;-47&lt;/b&gt; (10)로 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;캐리 값&lt;/b&gt;&lt;/span&gt;이 발생하지 않는 것도 확인할 수 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이는 &lt;b&gt;1의 보수&lt;/b&gt;의 단점을 보여주고 있는 것이기도 하다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;오버플로우로 인해 캐리 값&lt;/b&gt;&lt;/span&gt;이 발생하게 되면 추가적인 연산 작업이라는 수고스러움이 발생하게 되고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;b&gt;이는 논리회로의 설계를 복잡하게 만든다는 문제가 발생하게 된다.&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;또한&amp;nbsp;&lt;b&gt;1의 보수&lt;/b&gt;도 앞서 알아봤던 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;부호 절댓값&lt;/b&gt;&lt;/span&gt;과 마찬가지로 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;MSB&lt;/b&gt;&lt;/span&gt;를 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;부호 비트&lt;/b&gt;&lt;/span&gt;로 사용하면서&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;0&lt;/b&gt;을 표현하는 데 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;-0과 +0&lt;/b&gt;&lt;/span&gt;으로 구분하여 표현한다는 점도 동일하다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;하지만 해당 비트를 반전 시키는 것만으로 음수를 표현할 수 있고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;덧셈만으로 뺄셈을 구현할 수 있다는 특징이 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이러한 장단점을 통해 우리는 &lt;b&gt;1의 보수&lt;/b&gt;에서 조금 더 개선된&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;2의 보수&lt;/b&gt;&lt;/span&gt;라는 녀석을 만나러 갈 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그럴거면 뭐하러 굳이 이렇게 길게 &lt;b&gt;1의 보수&lt;/b&gt;라는 것에 대해서 알아봐야 했는가 의문이 들 수도 있을텐데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그 이유는 &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;2의 보수&lt;/b&gt;&lt;/span&gt;가 &lt;b&gt;1의 보수&lt;/b&gt;의 개념이 필요하기 때문에&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;우리는 지금까지 그 준비 운동을 한 것이라고 생각해주면 좋겠다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3. 2의 보수&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이제 본격적으로 2진법의 세상에서 음수를 표현하는 방법과 &lt;b&gt;2의 보수&lt;/b&gt;에 대해서 자세히 알아보도록 하자.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2의 보수&lt;/b&gt;는 말 그대로 &lt;b&gt;어떤 수에 더했을 때 &lt;span style=&quot;color: #ee2323;&quot;&gt;밑수 2&lt;/span&gt;가 되게 해주는 수&lt;/b&gt;라는 것을 이제는 바로 이해할 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그런데 1의 &lt;b&gt;2의 보수&lt;/b&gt;는 1이라는 건 당연히 알겠지만 0의 2의 보수는 무엇이란 말인가?&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;2진법의 세계에서는 0과 1이라는 숫자 밖에 존재하지 않는데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;0의 &lt;b&gt;2의 보수&lt;/b&gt;인 수 2는 도대체 어디에 있다는 것인가.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;앞서 &lt;b&gt;보수&lt;/b&gt;의 개념의 이해를 돕기 위해 10진법을 이용해 간단하게 설명했었다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;조금 당연한 소리를 하자면 10진법에서 표현할 수 있는 수는&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;1 ~ 10이 아니라 &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;0 ~ 9&lt;/b&gt;&lt;/span&gt;라는 것을 알고 있을 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;보수&lt;/b&gt;는 더했을 때 밑수가 되어야 하니 10진법에서도 0의 &lt;b&gt;10의 보수&lt;/b&gt;는 10이 되어야 한다고 생각하겠지만&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;사실 0의 &lt;b&gt;10의 보수&lt;/b&gt;는 0이 된다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;10진법에서 10은 자릿수를 넘어가는 수가 되기 때문에 앞자리에 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;오버플로우&lt;/b&gt;&lt;/span&gt;가 발생하고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그 결과 0이 되기 때문에 결국 &lt;b&gt;보수&lt;/b&gt;의 개념에서는 &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;10 == 0&lt;/b&gt;&lt;/span&gt; 이 된다는 뜻이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;따라서 0의 &lt;b&gt;10의 보수&lt;/b&gt;는 0이 된다는 것도 이해가 될 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;※ 다시 말하지만 보수는 수학적인 개념이 필요하기 때문에 좀 더 정확하고 깊이 들어가야 하지만&lt;/i&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;여기에서 그러기엔 너무 어렵고 복잡하기 때문에 우리는 좀 더 간단하게 이해하자.&lt;/i&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;다시 2진법의 세계로 돌아와 &lt;b&gt;2의 보수&lt;/b&gt;를 다시 살펴보면&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;0과 1로만 구성되어 있는 세계에서 2라는 숫자는 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;오버플로우가 발생한 숫자&lt;/b&gt;&lt;/span&gt;가 되는 것이고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;결국 &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;2 == 0&lt;/b&gt;&lt;/span&gt;이라는 것을 아마 이해할 수 있을 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;즉, 0의 &lt;b&gt;2의 보수&lt;/b&gt;는 2이면서 동시에 0인 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;여기에서 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;오버플로우&lt;/b&gt;&lt;/span&gt;라는 것에 초점을 맞춰서 생각해야 한다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2의 보수&lt;/b&gt; 등을 다루는 여러 블로그의 글들을 찾아보면 &lt;b&gt;2의 보수&lt;/b&gt;를 만드는 방법을&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;원래 수를 &lt;b&gt;1의 보수&lt;/b&gt;로 바꾸고 그 수에 1을 더하면 된다고 간단하게 설명하는 것을 볼 수 있을 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이렇게만 이해하고 사용한다면 변환 방법만 이해하는 것이기 때문에&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;여기에서는 단순히 변환 방법만 다루지 말고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;b&gt;왜 그렇게 되는 건지에 대한 부분을 조금 더 세밀하게 알아보자.&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;0의 &lt;b&gt;10의 보수, 2의 보수&lt;/b&gt;가 왜 0이 되는지 알아보는 과정에서&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;자릿 수를 넘어가는 수&lt;/b&gt;&lt;/span&gt;, 다시 말해, &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;오버플로우&lt;/b&gt;&lt;/span&gt;가 발생하기 때문에&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그 결과 0이 되는 것이고 0의 &lt;b&gt;10의 보수, 2의 보수&lt;/b&gt;가 전부 0인 이유인 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;조금만 더 생각해보면 보수는 단순히 보충해 주는 수가 아니라&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;&quot;어떤 수에 합해서 (해당 진법의 밑수로 만들어 &lt;span style=&quot;color: #ee2323;&quot;&gt;&quot;오버플로우&quot;&lt;/span&gt;를 시킨 후) 0으로 만들어주는 수&quot;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;라고 정리할 수 있겠다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그렇다면 이를 바탕으로 바로 예시로 들어가 보자.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;b&gt;예시 4)&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 17px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이라는 수가 있다면 이 수의 &lt;b&gt;2의 보수&lt;/b&gt;를 구하기 위해선&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;더했을 때 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;오버플로우&lt;/b&gt;&lt;/span&gt;를 발생시켜 0으로 만드는 수를 찾으면 되는 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그 말인즉슨, &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;오버플로우&lt;/b&gt;&lt;/span&gt; 된 수에서 원래의 수를 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;&quot;빼면&quot;&lt;/b&gt;&lt;/span&gt; 우리가 찾고자 하는 &lt;b&gt;2의 보수&lt;/b&gt;를 만날 수 있다는 뜻이기도 하다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;물론 컴퓨터 연산에서는 뺄셈 연산이 존재하지 않기 때문에&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;(그 때문에 이렇게 장황하게 &lt;b&gt;보수&lt;/b&gt;를 공부하고 있기도 하고)&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;실제로는 존재하지 않지만 우리는 수학적인 접근으로 이해하기 위해서 뺄셈 연산을 하는 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;8비트에서 &lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;오버플로우로&lt;/span&gt;&lt;/b&gt; 0이 되는 수는 아래와 같다.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style4&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;오버플로우&lt;/b&gt;&lt;/span&gt;&amp;nbsp;수에서 &lt;b&gt;&lt;i&gt;예시 4)&lt;/i&gt;&lt;/b&gt;를 빼면&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 51px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 11.1111%; height: 17px; text-align: center;&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; height: 17px; text-align: center;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; height: 17px; text-align: center;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; height: 17px; text-align: center;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; height: 17px; text-align: center;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; height: 17px; text-align: center;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; height: 17px; text-align: center;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; height: 17px; text-align: center;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; height: 17px; text-align: center;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 11.1111%; height: 17px; text-align: center;&quot;&gt;&lt;b&gt;-&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; height: 17px; text-align: center;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; height: 17px; text-align: center;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; height: 17px; text-align: center;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; height: 17px; text-align: center;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; height: 17px; text-align: center;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; height: 17px; text-align: center;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; height: 17px; text-align: center;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; height: 17px; text-align: center;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;b&gt;=&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;(2진법 뺄셈 헷갈린다면 인터넷에서 꼭 찾아보길...)&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이렇게 계산한 결과&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;1100 0110&lt;/b&gt; (2)&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;를 얻을 수 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이제 &lt;b&gt;2의 보수&lt;/b&gt;로 변환하는 방법으로 위의 값과 비교해 보자.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;2의 보수&lt;/b&gt;로 변환하는 방법은 &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;원래 수를 1의 보수로 변환한 후 +1&lt;/b&gt;&lt;/span&gt;을 하면 된다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;b&gt;예시 5)&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 34px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 11.1111%; height: 17px; text-align: center;&quot;&gt;&lt;b&gt;원래 수&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; height: 17px; text-align: center;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; height: 17px; text-align: center;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; height: 17px; text-align: center;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; height: 17px; text-align: center;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; height: 17px; text-align: center;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; height: 17px; text-align: center;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; height: 17px; text-align: center;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; height: 17px; text-align: center;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 11.1111%; height: 17px; text-align: center;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;1의 보수화&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; height: 17px; text-align: center;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;1&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; height: 17px; text-align: center;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;1&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; height: 17px; text-align: center;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;0&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; height: 17px; text-align: center;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;0&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; height: 17px; text-align: center;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;0&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; height: 17px; text-align: center;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;1&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; height: 17px; text-align: center;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;0&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; height: 17px; text-align: center;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;1&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;1의 보수로 변환한 &lt;i&gt;&lt;b&gt;예시 5)&lt;/b&gt;&lt;/i&gt;에 1을 더하면&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1100 0110&lt;/b&gt; (2)&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;가 되므로 우리가 앞서 계산했던 결과와 동일하다는 것을 알 수 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이제 마지막으로 &lt;b&gt;2의 보수&lt;/b&gt;로 연산을 해보자.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;b&gt;예시 4)&lt;/b&gt;&lt;/i&gt;를 &lt;b&gt;2의 보수&lt;/b&gt;로 변환한 수&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1100 0110&lt;/b&gt; (2) ( == &lt;b&gt;-58&lt;/b&gt; (10) )&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;에 &lt;b&gt;0101 1000&lt;/b&gt; (2) ( == &lt;b&gt;88&lt;/b&gt; (10) )을 연산해서 결과를 얻어보자.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;b&gt;예시 6)&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 51px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style4&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 5.55555%; text-align: center; height: 17px;&quot;&gt;&lt;b&gt;-58&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 5.55555%; text-align: center; height: 17px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 5.55555%; text-align: center; height: 17px;&quot;&gt;&lt;b&gt;88&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 5.55555%; text-align: center; height: 17px;&quot;&gt;&lt;b&gt;+&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;text-align: center; width: 5.55555%; height: 17px;&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;30&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 5.55555%; height: 17px;&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;b&gt;예시 6)&lt;/b&gt;&lt;/i&gt;의 결과와 같이 &lt;b&gt;2의 보수&lt;/b&gt;로 연산한 결과는 &lt;b&gt;1의 보수&lt;/b&gt;와는 달리&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;오버플로우&lt;/b&gt;&lt;/span&gt;가 발생해 이후에 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;캐리 값&lt;/b&gt;&lt;/span&gt;을 더해주지 않아도 정확한 값이 도출된다는 것을 알 수 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이러한 특징들을 정리하자면 &lt;b&gt;2의 보수&lt;/b&gt;에는 이런 장점들이 있다고 할 수 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2의 보수&lt;/b&gt;는 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;캐리 값&lt;/b&gt;&lt;/span&gt;이 발생하더라도 추가적으로 더하는 연산이 필요 없기 때문에&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1의 보수&lt;/b&gt;보다 &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;논리회로 설계가 훨씬 간단해진다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;더군다나 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;캐리 값&lt;/b&gt;&lt;/span&gt;을 무시해도 되니 &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;연산 속도도 빨라진다는 장점이 있다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;또한 &lt;b&gt;2의 보수&lt;/b&gt;도 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;MSB를 부호 비트로 사용&lt;/b&gt;&lt;/span&gt;하면서도&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;부호 절댓값&lt;/b&gt;&lt;/span&gt;과 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;1의 보수&lt;/b&gt;&lt;/span&gt;의 단점이었던 &lt;b&gt;-0, +0&lt;/b&gt;으로 구분하지 않고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;하나의 0만을 사용하는 것&lt;/b&gt;&lt;/span&gt;도 장점이라 할 수 있겠다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;어쨌든 &lt;b&gt;2의 보수&lt;/b&gt;로 변환하는 방법을 외우는 것이 더 효과적이지만&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이 글을 통해서 어떻게 그런 변환 방법이 나타나게 되었는지에 대해서 알아가는 시간이 되었으면 한다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;3편에서 계속&lt;/p&gt;</description>
      <category>프로그래밍 기본 지식/Chapter 7 컴퓨터 구조</category>
      <category>1의보수</category>
      <category>2의보수</category>
      <category>2진법음수표현</category>
      <category>컴퓨터구조</category>
      <author>거신</author>
      <guid isPermaLink="true">https://colossus-java-practice.tistory.com/54</guid>
      <comments>https://colossus-java-practice.tistory.com/54#entry54comment</comments>
      <pubDate>Wed, 14 Sep 2022 16:34:47 +0900</pubDate>
    </item>
    <item>
      <title>[Chapter 7 컴퓨터 구조] 1. 2진법의 음수 표현 (1편 - 부호 절댓값)</title>
      <link>https://colossus-java-practice.tistory.com/53</link>
      <description>&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;최근에 달렸던 댓글에 답변을 하면서 문득 뇌리를 스친 내용이 생겨서&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;정말 오랜만에 간단한 컴퓨터 구조론 지식을 포스팅해보고자 한다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이 내용을 공부한 지 오래되어서 예전에 공부했던 정보처리기사에서 정보를 얻고자 검색했는데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;2020년 이후로 개정된 정보처리기사는 나에게 있어 너무 생소한 기사 자격증이 되어 버려서&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;잠시 정신을 잃을 뻔하다가 다시 정신을 차리고 여기저기서 공부를 하고 내 나름대로 작성해보려 한다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;잡설은 그만두고 여기에서 작성되는 내용은 직접적으로 프로그래밍을 언급하는 부분이 아니라&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;컴퓨터 공학과 관련된 지식을 얻고 간다는 생각으로 가볍게 읽어줬으면 좋겠다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;읽어보고 이해가 잘돼서 나의 지식이 되면 좋은 것이고 모르면 어쩔 수 없는 것이고....&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;설명에 있어서 최대한 풀어서 설명하는 경향이 있기에 글이 길어질 수 있으므로&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;여려 편으로 나눠서 설명을 진행할 계획이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이번 편에서는 부호 절댓값에 대해서 설명할 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;목표 : 2진수의 음수 표현 방법 중 부호 절댓값에 대해서 변환하는 방법과 단점을 이해한다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;0. 서론&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;우리가 흔히 사용하고 있는 컴퓨터는 0과 1을 가지고 모든 데이터를 표현한다. 양자 컴퓨터 이런 건 얘기가 달라지겠지만&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;일단 우리가 알고 있는 컴퓨터의 구조에서는 0과 1만이 존재하고 이 2개의 숫자로 연산을 진행하는 것을&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;우리는 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;2진법&lt;/b&gt;&lt;/span&gt;이라고 말하는 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그런데 궁금한 점이 생기지 않는가?&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;단순히 0과 1을 이용해서 연산을 하는데 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;음수&lt;/b&gt;&lt;/span&gt;는 어떻게 표현할 수 있는 것일까?&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;비트에 부호가 있는 것도 아니고 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;-(마이너스)는&lt;/b&gt;&lt;/span&gt; 어떻게 표현한다는 것인가?&lt;/p&gt;
&lt;h4 style=&quot;text-align: center;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;그리고! 도대체 컴퓨터는 어떻게 뺄셈이란 걸 할 수 있는 것인가??&lt;/b&gt;&lt;/h4&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;알고보면 컴퓨터는 사칙연산 중에서 &lt;b&gt;덧셈&lt;/b&gt; 밖에 할 줄 모르는 녀석이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;컴퓨터는 &lt;b&gt;논리회로&lt;/b&gt;로 이루어져 &lt;b&gt;전기적 신호&lt;/b&gt;를 가지고 &lt;b&gt;&lt;i&gt;논리 연산&lt;/i&gt;&lt;/b&gt;을 실행하는 계산기이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;우리가 보통 컴퓨터는 0과 1로 이루어져 있다고 하지만&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;우리가 숫자로 0과 1로 표현한 것이지 실질적으로 전기 신호의 &lt;b&gt;ON / OFF&lt;/b&gt;를 말하고 있는 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이러한 전기 신호를 다양한 &lt;b&gt;논리 게이트 (AND, OR, NOT, XOR, NOR 등등)&lt;/b&gt;를 이용해&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;산술 연산을 하는 기계가 바로 우리가 지금 사용하고 있는 컴퓨터인 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;(혹시라도 나중에 기회가 된다면 논리 게이트에 대해서도 간단하게 알아볼 수 있도록 하겠다.)&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이런 논리 게이트 조합되어 &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;가산기&lt;/b&gt;&lt;/span&gt;가 되어 컴퓨터의 산술 논리 장치(ALU)의 부분으로 동작하는데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;문제는 &lt;b&gt;가산기&lt;/b&gt;라는 건 &lt;i&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;덧셈만 하는 기계&lt;/b&gt;&lt;/span&gt;&lt;/i&gt;라는 뜻이기도 하다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그렇다면 컴퓨터에서는 어떻게 &lt;b&gt;뺄셈&lt;/b&gt;을 연산할 수 있으며 또, &lt;b&gt;음수&lt;/b&gt;는 어떻게 표현할 수 있다는 것일까?&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;컴퓨터 구조와 관련해서 조금 더 심화된 내용을 여기에서 다루기엔&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;너무 복잡하고 또 이 글을 읽는 목적에도 어울리지 않기 때문에 생략하고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;우리는 일단 컴퓨터에서 &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;음수를 표현하는 방법&lt;/b&gt;&lt;/span&gt;부터 알아가보고자 한다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;컴퓨터는 &lt;b&gt;덧셈만 하는 장치&lt;/b&gt;라고 했으니&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이는 &lt;b&gt;음수&lt;/b&gt;로 표현할 수 있는 방법만 알 수 있다면 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;덧셈만으로도 뺄셈을 구현할 수 있다고 유추할 수 있을 것이다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그러므로 우리는 컴퓨터에서 음수를 표현하는 방법에 대해서&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;집중적으로 알아보도록 하자.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;컴퓨터에서 음수를 표현하는 방법으로 3가지가 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;부호 절댓값, 1의 보수, 2의 보수&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이렇게 총 3가지의 표현법이 있는데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;현재 우리가 사용하고 있는 대부분의 컴퓨터에서는 모두 &lt;b&gt;2의 보수&lt;/b&gt;라는 방식으로&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;음수를 표현하고 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2의 보수&lt;/b&gt;가 등장하기 전에 음수를 표현하는 방법으로 고안되었던 방식인&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;부호 절댓값&lt;/b&gt;과 &lt;b&gt;1의 보수&lt;/b&gt;는 방법은 간단하지만 단점이 분명했기 때문에&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이제는 사용하지 않는 방식이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;하지만 필요한 지식이 될 수도 있으니&amp;nbsp;하나하나 차근차근 살펴보도록 하자.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. 부호 절댓값&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;컴퓨터에서 가장 간단하게 음수를 표현할 수 있는 &lt;b&gt;부호 절댓값&lt;/b&gt;이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;지루하게 글로 읽지 말고 예시를 가지고 좀 더 직관적으로 알아보자.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;참고로 우리가 사용하는 컴퓨터의 프로세서는 32bit, 64bit 등의 연산 단위를 가지고 있는데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;여기에서 32bit, 64bit 등으로 표현하면 너무 복잡하니까&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;우리는 간단하게 8bit를 기준으로 알아가보자.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어 &lt;b&gt;11 &lt;/b&gt;(2)을 2진법으로 표현하면&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;i&gt;예시 1)&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 17px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 12.5%; text-align: center; height: 17px;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 12.5%; text-align: center; height: 17px;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 12.5%; text-align: center; height: 17px;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 12.5%; text-align: center; height: 17px;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 12.5%; text-align: center; height: 17px;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 12.5%; text-align: center; height: 17px;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 12.5%; text-align: center; height: 17px;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 12.5%; text-align: center; height: 17px;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이렇게 적을 수 있는데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;부호 절댓값&lt;/b&gt;을 이용해 -11 (10)을&amp;nbsp; 표현하고 싶다면&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;b&gt;예시 2)&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 17px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 12.5%; height: 17px; text-align: center;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 12.5%; height: 17px; text-align: center;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 12.5%; height: 17px; text-align: center;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 12.5%; height: 17px; text-align: center;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 12.5%; height: 17px; text-align: center;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 12.5%; height: 17px; text-align: center;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 12.5%; height: 17px; text-align: center;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 12.5%; height: 17px; text-align: center;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그림과 같이 맨 왼쪽의 비트를 1로 바꾸기만 하면 된다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;물론 8bit 이상의 자리라도 동일하게 &lt;b&gt;가장 왼쪽의 비트 값&lt;/b&gt;을 1로 바꾸면 된다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;여기서 &lt;b&gt;가장 왼쪽 비트&lt;/b&gt;를 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;MSB(Most Significant Bit), 최상위 비트&lt;/b&gt;&lt;/span&gt;라고 말하고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;여기에서는 부호를 구분하는 용도로 사용했기 때문에 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;부호 비트&lt;/b&gt;&lt;/span&gt;라고 표현한다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이렇듯 &lt;b&gt;부호 절댓값&lt;/b&gt;은 비트 하나만 바꾸면 되는 방법이기 때문에 음수를 표현할 수 있는 가장 간단한 표현법이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;하지만 지금 우리가 사용하고 있는 컴퓨터에서 음수를 표현하는 방법으로 &lt;b&gt;부호 절댓값&lt;/b&gt;을 사용하지 않는다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그 이유는 생각보다 간단한 이유가 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2. 부호 절댓값의 함정&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;부호 절댓값&lt;/b&gt;은 가장 왼쪽 비트, 다시 말해, &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;최상위 비트(MSB)&lt;/b&gt;&lt;/span&gt;의 값을 바꿔서 표현하는 방법이기 때문에&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;사람의 입장에서는 직관적으로 파악할 수 있다는 장점이 있지만&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;컴퓨터에게는 너무나도 불편한 녀석이 아닐 수 없다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;가장 간단한 예시로 위의 &lt;i&gt;&lt;b&gt;예시 1)&lt;/b&gt;&lt;/i&gt;과 &lt;i&gt;&lt;b&gt;예시 2)&lt;/b&gt;&lt;/i&gt;를 더해보자.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;b&gt;예시 3)&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style4&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 5.55555%; text-align: center;&quot;&gt;11&lt;/td&gt;
&lt;td style=&quot;width: 5.55555%; text-align: center;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 5.55555%; text-align: center;&quot;&gt;-11&lt;/td&gt;
&lt;td style=&quot;width: 5.55555%; text-align: center;&quot;&gt;&lt;b&gt;+&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 17px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;b&gt;-22?&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center; height: 17px;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;결과에서도 볼 수 있듯이 &lt;b&gt;11&lt;/b&gt; (10)과 &lt;b&gt;-11&lt;/b&gt; (10)을 더했는데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;결괏값으로 0이 아닌 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;-22&lt;/b&gt;&lt;/span&gt; (10)이 나와버렸다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;다른 예시를 살펴보자.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;b&gt;예시 4)&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style4&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 5.55555%; text-align: center;&quot;&gt;-32&lt;/td&gt;
&lt;td style=&quot;width: 5.55555%; text-align: center;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 5.55555%; text-align: center;&quot;&gt;-17&lt;/td&gt;
&lt;td style=&quot;width: 5.55555%; text-align: center;&quot;&gt;&lt;b&gt;+&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center; width: 5.55555%;&quot;&gt;49?&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 5.55555%;&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이번에는 음수 &lt;b&gt;-32&lt;/b&gt; (10)와 음수 &lt;b&gt;-17&lt;/b&gt; (10)를 더해 보았다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;부호 비트&lt;/b&gt;&lt;/span&gt;가 두 수 모두 1이라서 덧셈을 하니 자릿 수를 넘어가버리는 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;오버플로우&lt;/b&gt;&lt;/span&gt;가 발생해 버렸다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;비록 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;부호 비트&lt;/b&gt;&lt;/span&gt;는 없어져 버렸지만 어쨌든 절댓값만 따진다면 결괏값은 &lt;b&gt;49&lt;/b&gt; (10)로 제대로 계산은 됐다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;혹여 두 수 모두 &lt;b&gt;부호 비트&lt;/b&gt;가 1인 음수라면 &lt;b&gt;부호 비트&lt;/b&gt;는 연산하지 않고 그대로 1로 두는 동작을 구현한다면&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;아마 이 부분은 해결이 될테지만 하드웨어로 설계할 때 아마 엔지니어의 머리는 터져 나갈 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;위의 예시들을 보더라도 단순히 논리 회로들로만 구성되어 있는 컴퓨터를 설계하는데 있어서&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;얼마나 복잡해질지 정신이 아득해 질 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;수많은 케이스를 생각하고 또 각 케이스들마다 논리회로를 구현해야 한다면....&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;또한 부호 비트만으로 양수, 음수를 구분하는 덕분에 0에 부호가 붙는 요상한 숫자까지 등장하게 된다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;b&gt;예시 5)&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 34px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 11.1111%; height: 17px; text-align: center;&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;+0?&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; height: 17px; text-align: center;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; height: 17px; text-align: center;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; height: 17px; text-align: center;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; height: 17px; text-align: center;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; height: 17px; text-align: center;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; height: 17px; text-align: center;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; height: 17px; text-align: center;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; height: 17px; text-align: center;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;-0?&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.1111%; text-align: center;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;부호 비트&lt;/b&gt;&lt;/span&gt;를 제외한 나머지 비트로만 숫자를 표현하게 되니 0이 2개가 존재하게 되고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;부호 비트&lt;/b&gt;&lt;/span&gt;에 따라 부호가 붙게 되니 &lt;b&gt;+0, -0&lt;/b&gt;이라는 숫자가 등장하게 되는 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;결국 이러한 단점을 가진 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;부호 절댓값&lt;/b&gt;&lt;/span&gt;은 우리와 함께 할 수 없게 되었고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이론으로 남겨지게 되었다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;2편 &lt;b&gt;1의 보수, 2의 보수&lt;/b&gt; 에서 계속&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;※ 부족한 부분과 잘못된 부분이 많아서 전체적으로 내용을 많이 수정하고 추가하였습니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;혹시라도 잘못된 정보를 얻고 가셨던 분들에게는 양해의 말씀을 전합니다.&lt;/p&gt;</description>
      <category>프로그래밍 기본 지식/Chapter 7 컴퓨터 구조</category>
      <category>2진법음수</category>
      <category>부호절댓값</category>
      <category>컴퓨터구조</category>
      <author>거신</author>
      <guid isPermaLink="true">https://colossus-java-practice.tistory.com/53</guid>
      <comments>https://colossus-java-practice.tistory.com/53#entry53comment</comments>
      <pubDate>Tue, 13 Sep 2022 17:32:45 +0900</pubDate>
    </item>
  </channel>
</rss>