1. 빅 엔디언 머신 & 리틀 엔디언 머신 구별하는방법, 코드 작성
ex. A45C를 저장할때
빅 엔디언 머신에서는 A4를 첫 번째 바이트로, 5C를 두 번째 바이트로
리틀 엔디언 머신에서는 5C를 첫 번째 바이트로, A4를 두번째 바이트로 저장
즉 2바이트 중에서 첫 번째 바이트가 큰거면-> 리틀, 작은거면-> 빅
/*return 한 값이 1이면 리틀
0이면 빅
*/
bool isLittleEndian(){
int testNum;
char *ptr;
testNum = 1; //0x0001 or 0x0100
ptr = (char*) &testNum;
return (*ptr);
}
2. 비트에서 1의 갯수를 세는 방법
예로 00001011이라고 할 때:
오른쪽 끝이 1 이면 count ++, 비트에 더하기 1 ==> 비트: 00001100, count = 1
오른쪽 끝이 0 이면 shift ==> 비트 00000011, count = 1
위에 과정 반복:
비트: 00000100, count = 2
비트: 00000001, count = 2
비트: 00000000, count = 3
이렇게 1의 갯수를 셀수가 있음, 밑에 코드(빨간글씨는 처음보는 연산)
int numOnesInBinary(int number){
int numOnes = 0;
while( number != 0){
if( (number & 1 ) == 1){ //끝 비트가 1 인지 아닌지 확인
numOnes ++;
}
number = number >>> 1; //연산하고 1이 나올때까지 shift해줌
}
return numOnes;
}
'TIL > 개인공부' 카테고리의 다른 글
[2018 데이터챌린지] 악성코드 탐지 후기 1편 (0) | 2018.11.11 |
---|---|
[IOCP] 클라이언트 코딩 (0) | 2018.09.17 |
[IOCP] 서버 코딩 연습 (0) | 2018.09.17 |
[Tensorflow]우분투에 Tensorflow-gpu 버전 설치하기. 2 (0) | 2018.03.19 |
[Tensorflow]우분투에 Tensorflow-gpu 버전 설치하기. 1 (0) | 2018.03.19 |