원글
https://gall.dcinside.com/mgallery/board/view/?id=game_dev&no=130053&page=1
백터숫자 최소화? 하는데 좋은 방법있을까? - 인디 게임 개발 마이너 갤러리
0은 0을-n 값은 -1을+n값은 1을이렇게 리턴해주고 싶은 데if문 사용해서 x y를 0으로 비교해주는 방법밖에 없을까나?
gall.dcinside.com
0은 0을
-n 값은 -1을
+n값은 1을
이렇게 리턴해주고 싶은 데
if문 사용해서
x y를 0으로 비교해주는 방법밖에 없을까나?
이거 해결법이야 많겠지만 비트 연산자로 (n | 1) & -1 이렇게 하면 되지않나?
성능면에서도 좋을거 같고
결과가 참 거짓만 나오는데 원글은 3가지 결과가 필요한거아님?
논리연산자 아님
아 헷갈려서 말을 잘못했는데 0 -1 1 리턴받고 싶은데 그렇게하면 0 -1 1만 나오는게 아니지 않음? 본문 식대로면 마지막 비트는 항상 1 출력하는것 같고. 뇌코딩으로는 그런데 아닌가?
처음 1을 | 연산하면 1의 자리에 1을 넣고 거기에 -1을 & 연산하면 bit부호 자리랑 1의 부호자리 빼고 0으로 만드는데 0010 1000 0000 0001 | 연산 후 0010 1001 이 되고 1000 0001 이랑 & 연산 하면 0000 0001 이 되잖음
-1 은 1111 1111 아님?
0 집어넣으면 0 | 1해서 1 나오고 1 & -1 하면 1 나오잖아. 0000 0001 & 1111 1111 하면 1이니깐, 설령 -1이 1000 0001이어서 0000 0001 & 1000 0001이랑 연산하더라도 1나오므로 0은 0 출력 안하는 것 같은데 아닌가?
1의 보수법을 쓰면 1000 0001 되는 숫자를 넣어주면되지 않음? 예시의 경우 -1 대신 -126 하면 되고.. 아니면 직접 2진법으로 적어줘도 되고
0일 경우를 생각안했네
n == 0 ? 0 : ((n | 1) & -1) ㅋㅋㅋㅋㅋ
그 정도 마이크로 최적화가 필요한가 싶음 어차피 컴파일러가 알아서 잘해주니깐
맞아
때가쏙