정수 두개를 비트연산만 사용해서 덧셈, 뺄셈 을 하려고 합니다. 저는 최하위 비트부터 하나씩 훓으면서 계산하는 방법밖에 안떠오르는데요, 혹시 더 효율적인 방법없나요?
그리고 비트 3개 중에서 2개 이상이 true로 설정되어있는지 알아보려면 어떻게 하나요? if else 안쓰고 비트연산만으로 가능할까요?
기본적으로는 최하위 비트부터 차례차례 계산해야 하지만 이것을 보다 빠르게 하기 위한 여러가지 기법들이 있습니다.
디지털 공학이나 마이크로 프로세서쪽에 관한 책을 보시면 자세히 나올거에요..(ripple-carry, carry-look-ahead, carry-select, carry-skip, carry-save...)
안해봐서 모르지만 보다 고급적인 기법들은 소프트웨어루 구현하면 오히려 더 느려질거 같네요..
글구 세개중에 2개 이상이 true인지 알려면..(A&B) | (B&C) | (C&A) 하시면 됩니다. 요건 truth table을 그려보면 쉽게 알 수 있어요~
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
parallel adder를 소프트웨어로 구현하시는건가요..?
기본적으로는 최하위 비트부터 차례차례 계산해야 하지만 이것을 보다 빠르게 하기 위한 여러가지 기법들이 있습니다.
디지털 공학이나 마이크로 프로세서쪽에 관한 책을 보시면 자세히 나올거에요..(ripple-carry, carry-look-ahead, carry-select, carry-skip, carry-save...)
안해봐서 모르지만 보다 고급적인 기법들은 소프트웨어루 구현하면 오히려 더 느려질거 같네요..
글구 세개중에 2개 이상이 true인지 알려면..(A&B) | (B&C) | (C&A) 하시면 됩니다.
요건 truth table을 그려보면 쉽게 알 수 있어요~
댓글 달기