비트 연산에 관해서..
글쓴이: leolo / 작성시간: 목, 2003/07/03 - 10:11오전
제가 현재 비트연산에 관해서 연구중입니다.
예를 들어서
뉴스 = 0x02
스포츠 = 0x03
야구 = 0x04
두산 = 0x05
이렇게 설정된 한바이트 카테고리를 조합해서
4바이트의 정수형을 만들고자 합니다.
sum = 0x02030405
그리고, 맨 앞의 바이트를 읽어서 첫번째 카테고리가 "뉴스"인지를
확인하고자 합니다.
이를 위한 define문을 좀 알려주세요.
uint8_t new = 0x02
uint8_t sp = 0x03
uint8_t bs = 0x04
uint8_t ds = 0x05
uint32_t sum = 0x02030405
한가지 질문 더 드립니다.
0x00040000 의 사이즈로 표기된것 몇 KB인가요?
32KB가 아닌가요..
Forums:
#define NEWS 0x02if ( ( sum & ( NEWS
#define NEWS 0x02
if ( ( sum & ( NEWS << 24 ) ) == ( NEWS << 24 ) )
또는
#define NEWS 0x02000000
if ( ( sum & NEWS ) == NEWS )
-_-
비트 연산이라면..
1 -----1
01 -----2
001 -----4
0001 ----8
로 해서 and 연산을 해서 값을 빼오는게
쉬울꺼 같습니다.
뉴스 = 0x01
스포츠 = 0x02
야구 = 0x04
두산 = 0x08
_-_ 질문이 .. 약간 &&&이는 군요..
============================================================
선한 인간이냐 악한 인간이냐는 그사람의 의지에 달렸다. -에픽테토스-
의지 노력 기다림은 성공의 주춧돌이다. -파스퇴르-
============================================================
비트 연산을 하실려면 제곱승을 하셔야 합니다.1, 2, 4, 8,
비트 연산을 하실려면 제곱승을 하셔야 합니다.
1, 2, 4, 8, 16, ... 이런식으로요.
int news = 0x01;
int sport = 0x02;
int bball = 0x04;
int dusan= 0x08;
int all = news | sport | bball | dusan;// 4가지 비트가 모두 set 됫슴다.
if (all | news == all)
{
//news 비타가 set 되있슴.
}
else
{
//news 비트가 set 되지 않았슴.
}
all = all | news;// news 비트가 set 됨.
all = (all | news)^news;// news 비트가 unset 됨.
sport, bball 등도 마찮가니다.
news 자리에 sport나 bball을 놓고 연산하면
세트되었는지 테스트 할수 있으며
set 하거나 unset 할수 있습니다.
내가 문제를 제대로 이해 했는지 모르겠는데
아마 맞을듯 합니다.
즐거운 하루 되세요 ^^
- 험한 세계에서 자주국방 없는 경제력은 경비없는 은행이다. -
union 과 struct 를 이용해서 만들어 봤습니다.8비트니까 c
union 과 struct 를 이용해서 만들어 봤습니다.
8비트니까 char배열 썻죠.
2:^)
비트필트를 써보시죠.. 비트필드를 사용하면 비트연산은 컴파일러가 알아서
비트필트를 써보시죠.. 비트필드를 사용하면 비트연산은 컴파일러가 알아서 해줍니다..
0x00040000 은
16 x 4 = 64
댓글 달기