안녕하세요. 제가 2byte에 각각 3bit, 4bit, 9bit를 넣으려고 합니다.
3bit를 넣고서 4bit를 저장하려고 하는데
data[2] = (char)(number << 3);
로 하면 안되더라구요. 제가 잘 못한거니 안되는 거겠지만..
어떻해야할지.. 잘 몰라서요. 제 머리의 한계는 저거라서요.
너무 초보적인 질문을 드렸다구 구박하지 말아주세요. ㅠ.ㅠ
data[0]과 data[1] 에 넣고 싶으신 거 아닌가요? data[2]는 세번째 바이트인듯?
bit 연산자를 제대로 이해를 하지 못하는 관계로 전 편법으로 구조체로 해결합니다. 2바이트 구조체이 3bit, 4bit, 9bit 크기로 만들었습니다.. ^^;
struct _TWOBYTE { char three:3; char four:4; short nine:9; };
data |= (number&1111b)<<3;
대부분의 컴파일러에서 2진수는 지원하지 않습니다.. (number&0x7) 로 해야합니다..
오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...
http://mytears.org ~(~_~)~ 나 한줄기 바람처럼..
E1 << E2 는 E1, E2가 양수일 때 E1 * (2^E2) 와 동일합니다.
비트 연산자를 다룰 때는 무부호 정수unsigned integer형으로 하는 것이 좋습니다.
unsigned int i = ((((unsigned)three << 4) | four) << 9) | nine;
텍스트 포맷에 대한 자세한 정보
<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]
data[0]과 data[1] 에 넣고 싶으신 거 아닌가요?data[
data[0]과 data[1] 에 넣고 싶으신 거 아닌가요?
data[2]는 세번째 바이트인듯?
bit 연산자를 제대로 이해를 하지 못하는 관계로 전 편법으로 구조체로
bit 연산자를 제대로 이해를 하지 못하는 관계로 전 편법으로 구조체로 해결합니다.
2바이트 구조체이 3bit, 4bit, 9bit 크기로 만들었습니다.. ^^;
data |= (number&1111b)<<3;
data |= (number&1111b)<<3;
[quote="Anonymous"]data |= (number&1
대부분의 컴파일러에서 2진수는 지원하지 않습니다..
(number&0x7) 로 해야합니다..
오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...
http://mytears.org ~(~_~)~
나 한줄기 바람처럼..
E1 << E2 는 E1, E2가 양수일 때 E1 * (2^E
E1 << E2 는 E1, E2가 양수일 때 E1 * (2^E2) 와 동일합니다.
비트 연산자를 다룰 때는 무부호 정수unsigned integer형으로 하는 것이 좋습니다.
unsigned int i = ((((unsigned)three << 4) | four) << 9) | nine;
댓글 달기