No.4ベストアンサー
- 回答日時:
私も割り算命令の無いCPU用にアセンブラで作ります。
符号ありは少し複雑なので、符号なしで・・・。
// x/yの余りを求める(8bit/8bitの余りの場合)
unsigned char mod(unsigned char x, unsigned char y)
{
unsigned int a = x;
unsigned int b = y;
b <<= 7;
for (int i = 0; i < 8; i++) {
if (a >= b) {
a -= b;
}
b >>= 1;
}
return (unsigned char)a;
}
No.3
- 回答日時:
既に回答がでていますが、
スピードを無視したアルゴリズムですが、
下記の関数は、わり算を行って、商と余りを返す関数です。
// a / b を求める
// 商はsho、余りはamariに格納される
// a >= 0, b > 0が前提
void sub_dev(int a , int b , int *sho, int *amari){
*sho = 0;
while(a >= b){
(*sho)++;
a -= b;
}
*amari = a;
}
a>=0,b>0が前提です。(そうでない場合は誤動作します)
int a = 10;
int b = 3;
int sho,amari;
sub_deb(a,b,&sho,&amari);のように使います。
ところで、どうして剰余を求める時「論理演算と加減算とビットシフトのみで行う方法」が必要なのかということ自体に非常に興味があります。よろしければ、このような質問をされた理由を教えていただけませんでしょうか。
ありがとうございます。
No.4の回答にも書かれているのと同じような理由です。
実際はWindows搭載のコンピュータで実装しています。
したがって、%演算子を使えばいいのですが、
除算器と乗算器が無いものとして、実装を行いたいからです。
特に組込みのLSIを利用するものとして、作っています。
価格の都合で、あまり高価な回路にできないのだそうです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 数学 数1 三角形ABCにおいて、a=2√3、b=2√2、A=60°の時 c、B、Cを求めよ。という問題で 4 2022/11/23 21:48
- 数学 代数学でわからないところがあるので教えていただきたいです。 S={x,y,z}を濃度3の集合とする。 3 2022/11/13 06:05
- 数学 パーセントの計算 増減 5 2023/08/01 22:39
- 情報処理技術者・Microsoft認定資格 2進数の問題を教えてください。 1 2022/07/27 09:42
- 数学 「+−×÷(四則演算)」。 演算において、これ以外に考えられる方法は無いのでしょうか? 9 2022/06/03 03:24
- システム CPUの問題について 2 2022/07/09 12:04
- 数学 考え方が全くわかりません。お助けください。行列の利用の仕方がわかりません。 2 2022/05/29 22:12
- 数学 群の公理 xの逆元yはxごとにただ1つ決まる。そこで そのyを、一般的には記号x'で表す。 この演算 2 2022/08/06 02:23
- 数学 小学生がたった1日で19×19までかんぺきに暗算できる本、のおみやげ算。数学的に言うと何? 3 2023/04/07 09:35
- その他(プログラミング・Web制作) Visual Studio Code 関数の使い方について 3 2023/05/31 13:15
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語での引数の省略方法
-
「指定されたキャストは有効で...
-
#define _CRT_SECURE_NO_WARNIN...
-
複数桁10進数の*桁目だけを抽出...
-
(int *)の意味
-
卒業研究でよく分からないとこ...
-
ラップ関数とはどんなものですか?
-
if と配列の組み合わせ
-
C言語初心者です、、、お助けく...
-
【C++】関数ポインタの使い方
-
アスタリスクで正方形
-
インライン展開されているか確...
-
構造体の勉強中です 合計点の高...
-
異なる文字列のマッチングを、D...
-
数字列を3桁ごとにカンマで区切...
-
C言語 配列と関数の練習問題
-
C言語で三目並べをするプログラ...
-
入力を待たずにstdinの監視をし...
-
ファイルから読みこむ方法
-
課題でつまってます・・・
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「指定されたキャストは有効で...
-
C言語での引数の省略方法
-
複数桁10進数の*桁目だけを抽出...
-
#define _CRT_SECURE_NO_WARNIN...
-
ラップ関数とはどんなものですか?
-
卒業研究でよく分からないとこ...
-
【C++】関数ポインタの使い方
-
実数の整数部,小数部の取得
-
std::set<int> で、ある値が何...
-
C言語 エラーの原因がわからな...
-
c言語
-
system関数がうまくいかない
-
C++でvectorにテキストファイル...
-
acceptをalarmでタイムアウトさ...
-
if と配列の組み合わせ
-
return 1L
-
「{ } で囲むだけ」は正しい?
-
(マルチスレッド)_beginthrea...
-
PowerShellがうまくいかない
-
このプログラミング誰か教えて...
おすすめ情報