負の数を2の補数で表現する場合、符号付の整数を10進数から2進数や16進数に変換したり、逆に、2進数や16進数から10進数に変換するにはどうすればよいですか?
77 ビュー (過去 30 日間)
古いコメントを表示
負の数を2の補数で表現する場合、符号付の整数を10進数から2進数や16進数に変換したり、逆に、2進数や16進数から10進数に変換する方法を教えてください。
採用された回答
MathWorks Support Team
2010 年 7 月 5 日
MATLAB で提供されている2進数や16進数と10進数の変換関数である、DEC2BIN、DEC2HEX、BIN2DEC、BIN2HEX は、負の数に対応していません。
ページ下部の関連ドキュメントよりダウンロードできるサンプルMATLABコードのようにプログラミングを行うことで、2の補数をつかった符号付整数について2進数や16進数と10進数の変換を行うことができます。
●ndec2bin.m ・・10進数から2進数に変換
●ndec2hex.m ・・10進数から16進数に変換
●nbin2dec.m ・・2進数から10進数に変換
●nhex2dec.m ・・16進数から10進数に変換
※ 関数の引数については MATLABコード内のコメントを参照してください。
(注意)ファイルのダウンロードはダウンロード対象のリンクを右クリックし「対象をファイルに保存」を選択して行ってください。
このサンプルMATLABコードを用いた場合、次のように変換を行うことができます。
■10進数(-5)から8ビットの2進数に変換
>> ndec2bin(-5,8)
ans =
11111011
■2進数('11111011')から10進数への変換
>> nbin2dec('11111011')
ans =
-5
なお、オプション製品のFixed-Point Toolbox がある場合は、関数fiを用いて変換することもできます。
■関数fiによる10進数(-5)から2進数、16進数の変換
>> a=fi(-5,1,8,0); % 固定小数点オブジェト(符号付8ビット(小数部0))の定義
>> a_bin=a.bin % 2進数で表示
a_bin =
11111011
>> a_hex=a.hex % 16進数で表示
a_hex =
fb
■関数fiによる2進数('1111011')から10進数への変換
>> b=fi([],1,8,0); % 固定小数点オブジェクト(符号付8ビット(小数部0))を定義
>> b.bin='11111011'; % 2進数で値を定義
>> b_int=b.int % 10進数で表示
b_int =
-5
0 件のコメント
その他の回答 (0 件)
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!