radix 소트를위해서
float a 양과
int b = 0x007fffff 군을
&결합시킨후
아기가 1000만이 넘으면 8자리를 해당 수로
100만 자리인 경우는 7자리 이므로 0으로 처리하는 것이었습니다.
하지만 float가 &연산이 안되에 'ㅅ'ㅅ'ㅅ'ㅅ'ㅅ'
그렇다면 1000.0000을 float ref로 잡고 이보다 >한 수를 8번째 자리
나머지를 7자리수로 처리하면 되겠지요 라고 생각했더니
1000.001의 처리와 100.0001의 처리가 문제가 되는군요.
거기다 float는 %연산또한 되지 않네
그럼 방법은 10000을 *한다음 int에 넣고 10000000 ~ 16777214는 마지막 수를 살려두고 나머지는 다 죽이면 되겠다 ^_^
하고 비교연산 해봤더니 쓰레기값이 0~4가 들어오면 xxxx.xxx0으로 취급되고 5~9가 들어오면 xxxx.xxx5로 취급받네 float 변수형 만든놈 ㄴㄱ?
뭔 쓰바 쓰레기값에 따라 원값 비교연산 결과가 변하지 ㅋㅋ
ㅇㅋㅇㅋ 반올림이 아니니까. 그냥 7번째 자리 결과에 따라서 절대결과는 바뀌지 않네 그냥 0으로 초기화하면될듯
예외처리는 16777215~16777219 일때만 0으로 초기화 안해주고 5로 초기화 해주면 될듯
응? 무슨 문제야~?
이글은 제가 멘탈이 좀 나간상태에서 그적였기 때문에 아래에 보시면 멘탈이 덜 나간상태의 글을 보실 수 있으십니다.
제가 욕얻어먹으면 멘탈이 바로나가는 유리멘탈이라서 ;
hidden 비트는 계산에서 뺐나보넹
넹
가수부는 무조건 1로 시작하기 땜에 가수부 msb 1 하나는 생략되어 있어
그거는 큰 문제가 안됩니당
저도 원래 알고있는데 구글 자료에서 낚여서 ;; 이제 인지하구 있씁니다
float 기수정렬을 바라는거야?
넹
정확이는 유효자리수 연산
http://gall.dcinside.com/board/view/?id=programming&no=593576
유효자리수 처리에 관해서 생각중이었어요
여기 보면 real2uexp 니 uexp2real 이니 하는 인라인 함수가 4개가 있어. 둘은 float 형 둘은 double 을 위한거임.
float를 카운터 소트하려고했는데 유효자리수때매 막혔었거든요.
넴 함 보겠습니다
내가 작성한건데. 어차피 지수부에서 가수부까지는 값이 점점 작을수록 감소하니까, 비트연산을 통해 부호를 밀어올리는 방법을 쓴거지.