C언어 진수에 관한.. 질문좀 할께여.. 죄송합니다..

min2to의 이미지

책을 보는 도중에.. 16진수는 ox로 시작한다고
하는데여.. 8진수는 0으로 시작하고..

근데.. 이해가 않가는게여..

int a=oxa7; //16진수..

int b=024; //8진수..
출력 해서 값을보면..답이..

16진수는.. 167로.. 나오구...
8진수는.. 20... 더라구여.. 이 계산방식이.. 정말.. 미칠듯이..
궁금하고 .. 어서.. 알수있는방법이.. 없더라구여..
부탁드립니다..

익명 사용자의 이미지

printf로 출력할때 %d로 출력하셨으니 당연히 167이 나오죠. 10진수 167이나 16진수 0xA7이나 똑같은 수인건 아시죠?

익명 사용자의 이미지

8진수 16진수에 대한 질문이신듯 한데...

첫번째 16진수는
a는10 이고 a가 16^1 의 자리에 있고
1의 자리에는 7이 있으니
16^1 * 10 + 7 이겠지요
고로 160 + 7 = 167

8진수도 마찬가지로
24인데
8^1의 자리에 2가 있고
1의 자리에는 4가 있기 때문에
8^1 * 2 + 4 이 되겠네요
16 + 4 = 20

min2to의 이미지

Anonymous wrote:
8진수 16진수에 대한 질문이신듯 한데...

첫번째 16진수는
a는10 이고 a가 16^1 의 자리에 있고
1의 자리에는 7이 있으니
16^1 * 10 + 7 이겠지요
고로 160 + 7 = 167

8진수도 마찬가지로
24인데
8^1의 자리에 2가 있고
1의 자리에는 4가 있기 때문에
8^1 * 2 + 4 이 되겠네요
16 + 4 = 20

정말.. 눈물나게 감사..해여.. ㅜ.ㅜ 좋은 밤 되세여~..

모르는건 물어보라구 엄마 아빠가 알려주셧습니다
고수님,선배님들 도와주십쇼 독학하는 학생입니다

tinywolf의 이미지

min2to wrote:
책을 보는 도중에.. 16진수는 ox로 시작한다고
하는데여.. 8진수는 0으로 시작하고..

참고로 확인시켜 드린다면..
16진수는 ox(영문 오엑스)가 아니고 0x(숫자 영 영문 엑스)로 시작합니다..
min2to wrote:

int a=0xA7; //16진수..
int b=024; //8진수..

ㅡ_ㅡ;

min2to의 이미지

아하 감사~~

제가 응용능력이 너무 딸린가봐여.. 흑흑..

0x43은.. 답이. .67인데..

이건.. . 0x옆에.. a도 없고 b c. .. . . .. 등등 없는건..

16진수로 어떻해 계산하나여..

(머리 나쁜사람의.. 고통..)

모르는건 물어보라구 엄마 아빠가 알려주셧습니다
고수님,선배님들 도와주십쇼 독학하는 학생입니다

bigpooh의 이미지

2진수 0 1 두개의 숫자만을 사용합니다.
8진수 0 1 2 3 4 5 6 7 의 8개 숫자를 사용합니다.
16진수 0 1 2 3 4 5 6 7 8 9 a b c d e f 의 16개 수를 사용합니다.
각 진수 사용 방식은 우리들이 쓰는 10진수와 같습니다.

10진수 123 은
10^2 * 1 + 10^1 * 2 + 10^0 * 3 = 123

16진수 43은
16^1 * 4 + 16^0 * 3
이므로 10진수로 67 입니다.

min2to의 이미지

/....

16^1 x 4 + 16^0 x 3

이런 계산 방식이 였군여..

아마.. 답변이 없었으면.. 평생몰랐을 겁니다..

하핫... 감사 합니다/./

다들 좋은 밤 되세여~

모르는건 물어보라구 엄마 아빠가 알려주셧습니다
고수님,선배님들 도와주십쇼 독학하는 학생입니다

ssehoony의 이미지

현재 우리가 사용하고 있는 아라비아 숫자는 자리(position)이 의미가 있는 숫자 체계입니다.
무슨 말이냐 하면, 46 라고 하면 4은 두번째자리이고 6는 첫번째 자리인데 그냥 단순히 아라비아 숫자 0 1 2 3 4 5 6 7 8 9 의 순서로 따지면 4 보다 6이 큰수 이지만 4는 두번째 자리라는 추가적인 특징이 있어 첫번째자리에 있는 6보다 실제 큰 수가 됩니다.

하지만, 로마 숫자는 그렇지가 않습니다.
I II III IX X XI XII XIII IV V VI VII VIII VIX VX ..... VVX .....
여기서 아라비아 25에 해당하는 VVX 를 보면 첫번째 V 와 두번째 V 가 자리에 상관없이 10을 의미합니다.

위의 두 표기법으로 곱셈과 나눗셈을 한다면 어느게 더 쉬울까요?
로마숫자를 사용할 때는 곱셈과 나눗셈이 상당히 고난도 문제가 됩니다.
하지만, 아라비아 숫자로는 쉽지요.
(피타고라스 정리 아시죠? 파티고라스는 살아있을 당시 로마숫자를 사용하는 시대에 살았습니다. 로마숫자 표기로 피타고라스정리를 알아내다니 대단하죠? ^^)

이 처럼 표기법에 따라 같은 문제가 쉬울 수도 있고, 어려울 수도 있습니다.

다시 아라비아 숫자로 돌아가서 진수에 대한 이야기를 해보도록하죠.
아라비아 숫자는 자리가 의미를 갖는 특징 때문에 다음과 같은 표기도 가능합니다.
46 = 4*10^1 + 6*10^0
7256 = 7*10^3 + 2*10^2 + 5*10^1 + 6*10^0
여기서 10^3, 10^2, 10^1 과 같이 10 이 기준이 된 이유는 아라비아 숫자가 한자리를 구분하기 위해 0 1 2 3 4 5 6 7 8 9 이렇게 총 10개를 사용하기 때문입니다.
이런 표기법을 10진법이라고 부르지요.

그럼 대표적으로 많이 사용되는 16진법과 8진법, 2진법은 어떤 걸까요?
16진법은 숫자 표기를 위해
0 1 2 3 4 5 6 7 8 9 0 A B C D E F 를 사용합니다.
그래서 A 는 10진법의 10을 의하며, B는 11, F는 15를 의미합니다.
그래서 16진수 64 는 10진수는 6*16^1 + 4*16^0 을 의미합니다.
16진수 2E4B 는 10진수 2*16^3 + 14*16^2 + 4*16^1 + 11*16^0 과 같습니다.
같은 방식으로 8진수는 0 1 2 3 4 5 6 7 8 로 표기를 하는 것이고
2진수는 0 1 로 표기를 하는 것입니다.

우리들은 어렸을 때 부터 10진수를 사용해서 10진수로 계산하는 것이 편리하기 때문에 16진수를 8진수로 변환할 때 곧바로 변환하는 것 보다 16진수 -> 10진수 -> 8진수 이렇게 하는 쪽이 직접 사람이 손으로 계산할 때는 쉽습니다.
(진수 변환법은 생략하겠습니다.)

컴퓨터는 모든 수를 2진수로 처리를 합니다.
전기적인 특징 때문에 2진수를 사용하는게 편리하기 때문입니다.
내부적인 처리는 모두 2진수로 하고, 모니터나 화면등에 표시할 때는 대부분 사람이 읽기 좋게 하기 위해 10진수로 변환해서 표시를 해줍니다.

컴퓨터는 8비트를 1바이트로 약속하고, 대부분 바이트를 최소단위로 간주하고 처리를 하지요.
(간혹 비트가 더 편할 때엔 비트를 이용해 처리합니다.)
1바이트는 10진수 0~255 를 표기할 수 있는데요.
위의 표기를 16진수로 변경하면 0 ~ FF 까지 입니다.
10진수로 3자리를 사용해야 할텐데 16진수로는 2자리면 표기가 가능하다는 편리함이 있습니다.
게다가 8비트인 00000000 를 4자로 끊어서 0000 0000 구분지으면 2진수 0000 ~ 11111 은 10진수 0 ~ 15, 16진수 0~F 까지에 해당합니다.
이때 8비트를 10진수로 변환해서 생각하는 것 보다 상위 4비트와 하위 4비트를 분리해서 16진수로 생각하면, 비트 단위로 작업을 할 때는 10진수로 생각할 때 보다 편리한 경우가 생깁니다.

min2to의 이미지

대단하십니다..

모르는건 물어보라구 엄마 아빠가 알려주셧습니다
고수님,선배님들 도와주십쇼 독학하는 학생입니다

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.