負の数を2の補数で表​現する場合、符号付の​整数を10進数から2​進数や16進数に変換​したり、逆に、2進数​や16進数から10進​数に変換するにはどう​すればよいですか?

77 ビュー (過去 30 日間)
MathWorks Support Team
MathWorks Support Team 2010 年 7 月 5 日
負の数を2の補数で表現する場合、符号付の整数を10進数から2進数や16進数に変換したり、逆に、2進数や16進数から10進数に変換する方法を教えてください。

採用された回答

MathWorks Support Team
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 件)

カテゴリ

Help Center および File Exchangeデータ型の変換 についてさらに検索

タグ

タグが未入力です。

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!