정수를 입력받은 변수를 강제형 변환시 %로 나눈이유가 무엇이죠?

익명 사용자의 이미지

자바에서
Int형을 Byte형으로 변환시 인트형 정수를 %로 나누는데 이해가 되지않습니다.. 저는 비트를 직접써서 오버플로우되는 부분을 지우거 다시 계산해주는 방식으러 했거든요
예를들어 int b = 300 을
byte a=(byte)b 를 하면 a에는 300%256인 44가 저장된다하는데 저기서 어떻게%를 쓸수있는지가 궁금합니다

123아이스의 이미지

개그맨의 이미지

256을 hex로 표현하면 0x100이 되고 %256을 한다는 의미는
a = b & 0xff와 같습니다.

122134의 이미지

...

...!의 이미지

더 작은 범위를 표현하는 타입으로 캐스팅하는 것이라 정의하기 나름입니다만, 하위 8비트가 나타내는 값으로 변환한다고 정의하면 256으로 나눈 나머지가 그 값인 것은 당연하지 않나요? 10진수의 경우를 생각해보시면 이해가 쉬울 듯 합니다. 예를 들어 12325의 하위 두 자리 수는 12325 를 100으로 나눈 나머지 25입니다. 하위 세 자리 수는 1000으로 나눈 325지요. 수식을 써서 일반적으로 증명할 수도 있습니다만 이 예가 와닿지 않는다면 엄밀한 증명은 별 의미 없습니다. 12325를 잘 생각해보세요.

1ㅈ3212의 이미지

2진수 비트를 가지고서 그냥 나눈 나머지가 앞에 비트를 잘라낸다는것은 이해가 가지않습니다..

...!의 이미지

전혀 다를 것이 없습니다. 완전히 같은 문제입니다. 10진수냐 2진수냐는 중요하지 않습니다. 10진수로는 이해되는 데 2진수로는 이해되지 않으시면다면 2진수가 뭔지 사실은 모르시는 겁니다. 2진수가 무엇인지 한 번 "말로 정확하게" 써보시고 곰곰히 생각해보세요.

123567567의 이미지

2진수를 모른다고 생각하진않는데 비트를 제거하는것과 %르하는것이 무슨연관이 있는지는 도무지 모르겠네요..

DarkSide의 이미지

십진수, 이진수의 문제가 아니라고 말씀하셨잖아요.
256으로 나눈 나머지를 구하면 앞의 비트가 다 날라가고 나머지만 남게 되죠.
먼저 적극적으로 사고해 보시길.

ㅂ2344의 이미지

표기의 차이지 같은 걸 말하는건 저도 알고 있습니다 다르다고 말한적은 없구요 다만 비트를 없애는것이 왜 mod와 같은지 머릿속으로는 그럴거 같지만 확실히 알고싶어서 질문드린겁니다

raymundo의 이미지

이미 다른 분이 예를 들어주셨지만 다시 한 번...

십진수 12345 는 다섯 자리.

하위 1자리만 남기고 싶다면? 12345 % 10^1 = 5
하위 2자리만 남기고 싶다면? 12345 % 10^2 = 45
하위 3자리만 남기고 싶다면? 12345 % 10^3 = 345
...

이게 가능한 이유는 십진법에서 하위 N자리를 제외한 상위 자리의 수는 무조건 10^N으로 나누어 떨어지기 때문입니다. (상위 자리 중 가장 낮은 자리의 수가 a*10^N 이고 그 다음 자리의 수가 b*10^(N+1)이고 그 다음 자리는 c*10^(N+2) 이고...니까)

즉 상위 자리의 수를 제거하는 것은 10^N으로 나눈 나머지를 구하는 것과 동일합니다.

300을 이진수로 표현하면 0000 0001 0010 1100

하위 1비트만 남기고 싶다면? 0000 0001 0010 1100 % 2^1 = 0
하위 4비트만 남기고 싶다면? 0000 0001 0010 1100 % 2^4 = 1100 (십진수 12 = 300 % 16)
하위 8비트만 남기고 싶다면? 0000 0001 0010 1100 % 2^8 = 0010 1100 (십진수 44 = 300 % 256)

여기서도 마찬가지로 우측 8비트를 제외한 나머지 상위 비트는 전부 2^8로 나누어 떨어지니까, 상위 비트의 값을 제거하는 것과 2^8로 나눈 나머지를 구하는 것이 동일하죠.

좋은 하루 되세요!

1233221의 이미지

머릿속으로는 될거깉은데 왜되는가를 설명하려니 이해가 안되더군요 감사합니다

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.