0

重複の可能性:
ビット演算子を使用して除算を実装する

私は最近、ビット単位の関数をより深く理解し、ビット単位の演算子を使用して基本的な算術関数を実装し始めました。これまでのところ私は得てい(+, -, *)ます。しかし、どうやって分割に取り組むのかよくわかりません。代わりにどういうわけか乗算を使用できることは知っていますが、その方法を使用してこれにアプローチする方法もわかりません。

では、これらのビット演算子のみを使用して除算を実装するにはどうすればよいでしょう(|, &, ~, ^, >>, <<)か。尋ねる人にとって、これは宿題ではなく、個人的な知識です。

必要に応じて、コード内で次の関数を呼び出して簡単にすることができます(これらは事前に作成されています)

int badd(int n1, int n2);
int bsub(int n1, int n2);
int bmult(int n1, int n2);
4

1 に答える 1

0

標準ライブラリが利用可能であると仮定すると、Cでは演算子をまったく使用せずに2つの整数を除算できます。

int result = div(a, b).quot;

:この回答は純粋に修辞的なものでしたが、標準ライブラリ(および言語自体)がサポートしている場合に、Cで除算関数全体を書き込もうとする愚かさを示すために出されました。答えがすでにあなたの指先にあるのに、なぜあなたは(単に学ぶためであっても)車輪を書き直すのですか?

于 2012-09-22T01:24:02.427 に答える