비트연산에 대해서 말입니다...

gloomyr의 이미지

16 비트 짜리( 2바이트) 길이의 변수가 있습니다.
하지만 이변수는 8비트 + 8비트 해서 만들어진 변수입니다.

10011100 00000011 -> 이것이 16비트 짜리 변수입니다.
이것을
00000011 10011100 -> 요렇게 스왑할려고 합니다.
잘됩니다...

그런데 문제가..
8비트씩 하니 젤 앞부분비트가 부호비트로 인식이 되어버리는군요..
골때립니다...

부호비트로 인식하지 않게 하는좋은 수가 없을가요..
아니면 부호비트라도 상관없이 그냥 그대로 스왑해서 복사할수 있는 방법이 없을려나요..

예전에 들었던 기억으로 unsinged 로하면 부호비트로 인식안한다고 들었던거 같은데
unsigned해도 연산하는단계에서 signed로 인식되어버리는듯한..

haze11의 이미지

바이트오더링 문제 같은데.. htons ntohs 같은거 살펴보세요

bootmeta의 이미지

사용 OS, compiler 버전 정보도 포함하면 금상첨화.

volatile의 이미지

int a=0x9c03;
int b= ((a & 0xff00 ) >>8 ) + ((a & 0x00ff) << 8);
이렇게 하면 될듯요

gloomyr의 이미지

해보았죠.. 이방법..
다른건 다 문제가 없는데 제일 앞에 부호비트 걸려있으면 부호비트가 쭉 다 밀립니다..

volatile의 이미지

산술이 아닌데 부호를 인식한다는게 좀...이상하네요.
비트연산이고 단순히 쉬프트인데 "<<" 가 arithmetic shift가 아닐텐데요.
이상하군요.

aruee의 이미지

어떻게 하셨는지는 모르겠지만 중간값들도 모두 unsigned 로 선언하세요...
아니면 int 형에 담아서 스왑 시키시던지....

lain07의 이미지

=으로 하면 잘 안되는 부분이 있어서
1byte 짜리 캐릭터 문자열로 선언해서
그냥 메모리카피(memcpy)하니까 잘 되던것 같습니다.
___________________________
I like Small Linux.


___________________________
I like Small Linux.

MasterQ의 이미지

컴파일러가 sign extend되는 instruction을 쓴것 같네요. unsigned가 빠진곳은 없는지 확인해보세요.

댓글 달기

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