アプリ版:「スタンプのみでお礼する」機能のリリースについて

#include<math.h>

#define M 1000
#define T 20
#difine PI 3.1415926

int i;
double sig[M];
main(){
for(i=0;i<M;i++){
sig[i]=sin(((double)i/M)*T*2*PI);
}
}

この正弦波の波形を8ビット、16ビットに直したいのですが
分かりません。教えて下さい。お願いします。

A 回答 (3件)

し、しまった・・・(^^;


補足ありがとうございました。>tatimiさん
最近あんまりプリミティブなことしてないので・・言い訳。
    • good
    • 0

すっ、すいません。

shigatsuさんへ。
 sinの範囲は-1~+1です。
 符号なし8bitの範囲は0~255です。

という事で、
(符号付き)8bit(signed char)の範囲は-128~+127、
(符号付き)16bit(signed short)の範囲は-32768~+32767です。
-128や-32768という値は使わないように範囲を変換してください。
    • good
    • 0

「波形を?ビットに直す」ってのはどういう処理を期待しているのでしょうか?


最大幅を?ビットにしたいってことですかね?
sin() の発生範囲は確か0~1の間ですよね?欲しい範囲が例えば符号無し8ビットとして0~256。この辺からどうすれば良いか見えてきませんか?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!