반응형
곱하기 연산(2의 배수)
x = x * 2;
x = x * 64;
//equals
x = x << 1;
x = x << 6;
나누기 연산(2의 배수)
x = x / 2;
x = x / 64;
//equals
x = x >> 1;
x = x >> 6;
정수로 변환
x = int(1.232);
//equals
x = 1.222 >> 0;
색 추출
// 24bit
var color:uint = 0xff336699;
var a:uint = color >> 16;
var g:uint = color >> 8 & 0xff;
var b:uint = color & 0xff;
//32bit
var color:uint = 0xff336699;
var a:uint = color >> 24;
var r:uint = color >> 16 & 0xff;
var g:uint = color >> 8 & 0xff;
var b:uint = color & 0xff;
색 병합
//24bit
var r:uint = 0x33;
var g:uint = 0x66;
var b:uint = 0x99;
var color:uint = r << 16 | g << 8 | b;
//32bit
var a:uint = 0xff;
var r:uint = 0x33;
var g:uint = 0x66;
var b:uint = 0x99;
var color:uint = a << 24 | r << 16 | g << 8 | b;
임시변수 없이 XOR 을 사용하여 정수 교환
var t:int =a;
a=b;
b=t;
//equals
a ^= b;
b ^= a;
a ^= b;
증감/가감 연산
기본 ++,-- 보다 느리다. 코드를 복잡하게 할 수 있다.
i = -~i; // i++
i = ~-i; // i--
NOT 혹은 XOR을 이용한 부호변환
i = -i;
//equals
i = ~i + 1;
//or
i = (i ^ -1) + 1;
AND 연산을 사용한 나머지 연산
2의 배수로 나눌때만 사용 가능하다.
modulus = numberator & (divisor - 1);
x = 131 % 4;
//equals
x = 131 & (4-1);
절대값구하기
//version 1
i = x < 0 ? -x : x;
//version 2
i = ( x ^ ( x >> 31)) - ( x >> 31);
부호 비교
eqSign = a * b > 0;
//equals
eqSign = a ^ b >=0;
출처 : http://lab.polygonal.de
출처 : http://blog.naver.com/PostView.nhn?blogId=c96jks&logNo=130050823702&redirect=Dlog&widgetTypeCall=true
x = x * 2;
x = x * 64;
//equals
x = x << 1;
x = x << 6;
나누기 연산(2의 배수)
x = x / 2;
x = x / 64;
//equals
x = x >> 1;
x = x >> 6;
정수로 변환
x = int(1.232);
//equals
x = 1.222 >> 0;
색 추출
// 24bit
var color:uint = 0xff336699;
var a:uint = color >> 16;
var g:uint = color >> 8 & 0xff;
var b:uint = color & 0xff;
//32bit
var color:uint = 0xff336699;
var a:uint = color >> 24;
var r:uint = color >> 16 & 0xff;
var g:uint = color >> 8 & 0xff;
var b:uint = color & 0xff;
색 병합
//24bit
var r:uint = 0x33;
var g:uint = 0x66;
var b:uint = 0x99;
var color:uint = r << 16 | g << 8 | b;
//32bit
var a:uint = 0xff;
var r:uint = 0x33;
var g:uint = 0x66;
var b:uint = 0x99;
var color:uint = a << 24 | r << 16 | g << 8 | b;
임시변수 없이 XOR 을 사용하여 정수 교환
var t:int =a;
a=b;
b=t;
//equals
a ^= b;
b ^= a;
a ^= b;
증감/가감 연산
기본 ++,-- 보다 느리다. 코드를 복잡하게 할 수 있다.
i = -~i; // i++
i = ~-i; // i--
NOT 혹은 XOR을 이용한 부호변환
i = -i;
//equals
i = ~i + 1;
//or
i = (i ^ -1) + 1;
AND 연산을 사용한 나머지 연산
2의 배수로 나눌때만 사용 가능하다.
modulus = numberator & (divisor - 1);
x = 131 % 4;
//equals
x = 131 & (4-1);
절대값구하기
//version 1
i = x < 0 ? -x : x;
//version 2
i = ( x ^ ( x >> 31)) - ( x >> 31);
부호 비교
eqSign = a * b > 0;
//equals
eqSign = a ^ b >=0;
출처 : http://lab.polygonal.de
출처 : http://blog.naver.com/PostView.nhn?blogId=c96jks&logNo=130050823702&redirect=Dlog&widgetTypeCall=true
반응형
'학습자료(~2017) > 팁' 카테고리의 다른 글
C 언어에 대한 FAQ 가 잘 정리되어있다. (0) | 2012.01.27 |
---|---|
표준에 관한 웹 사이트 (C 언어) (0) | 2012.01.27 |
배치 프로그래밍 참고자료 (0) | 2012.01.12 |
유니캐스트, 브로드캐스트, 멀티캐스트 (0) | 2011.12.05 |
뮤텍스나 세마포 혹은 크리티컬섹션을 구현하여야 할때 (0) | 2011.11.10 |