• ベストアンサー

16進数→2進数→16進数の際の符号

いつもお世話になっております。 今回は基数変換についてお聞きしたいです。 フォームに入っている16進数の文字列(12ABなど)を受け取って、それを2進数にしてビットを反転させた後に再び16進数にしたいのです。 その部分はtoStringでできそうなのですが、この場合、符号はどのようになるのでしょうか? 少しやってみた感じでは符号なしのように動いたのですが実際はどうなっているのでしょうか? 探してみましたがはっきりと書いてあるところが見当たりませんでしたので詳しい方、ご教授願います。

質問者が選んだベストアンサー

  • ベストアンサー
  • aigaion
  • ベストアンサー率47% (287/608)
回答No.1

a = 0x12AB; document.write(a.toString(16)+"<BR />"); a = ~0x12AB; document.write(a.toString(16)+"<BR />"); a = 0x12AB ^ 0xFFFF;document.write(a.toString(16)+"<BR />"); 出力 12ab -12ac ed54 ビット反転の演算子を使っていたら普通に符号が出ると思うので 0xFFFFあたりで排他的論理和をとったのかな? まぁ、それを前提として・・・違ったら放置で(ぁ JavaScriptの整数の内部表現は、符号付き32ビットみたいです。 iec1128さんがやっているように16bitの範囲で排他的論理和を利用してビット反転をするなら問題ないですが 32bitの値を扱う場合は、最上位ビットが立つと符号が付いてしまいます。 また、符号付きで32bit以上の値になると型が整数型ではなく浮動小数点型になってしまうようなので そのあたりも注意が必要かと思います。 >はっきりと書いてあるところが見当たりません 使い方についての記事が多くて厳密に日本語で仕様が書いてあるところが ほとんどなかったですね^-;;

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 10進数を2進数に

    10進数を2進数に変換する問題なのですが、 まったくもって理解ができません、教えて頂ければ幸いです S(符号)は1ビットで仮数の符号を表す E(指数部)は4ビットで指数を表し負数は2の補数で表現 M(仮数部)は11ビットで仮数の絶対値を表す 基数は2とする 仮数の0,2進数の少数以下第一位が1になるように、正規化された形で表す 小数点はEとMの位置にする 0の表現はー0と+0の二通りがあり特別に指数部と仮数部をすべて0にする 問.10進数の-5.25を2進数で表示しなさい 問.10進数の-0.125を2進数で表示しなさい 答えと解き方を教えて頂ければ幸いです

  • 10進数を2進数にする問題について教えてください

    10進数を2進数にする問題について 10進数を2進数に変換について 10進数を2進数に変換する問題なのですが、 まったくもって理解ができません、教えて頂ければ幸いです S(符号)は1ビットで仮数の符号を表す E(指数部)は4ビットで指数を表し負数は2の補数で表現 M(仮数部)は11ビットで仮数の絶対値を表す 基数は2とする 仮数の0,2進数の少数以下第一位が1になるように、正規化された形で表す 小数点はEとMの位置にする 0の表現はー0と+0の二通りがあり特別に指数部と仮数部をすべて0にする 問.10進数の5.25を2進数で表示しなさい 問.10進数の0.125を2進数で表示しなさい 答えと解き方を教えて頂ければ幸いです

  • サンプリング周波数と符号化ビット数の問題について

    デジタル化されたオーディオ信号のことについて教えてください。  PCM化されたオーディオ信号では、サンプリング周波数として、48キロ、96キロ、192キロ、と3種類、そして、符号化のやり方として、16ビット、24ビット、32ビット、とこれも3種類あると聞いていますが、このような多種多様なデジタル信号をアナログに変換するにあたって、DAコンバーターが48キロまでのサンプリング信号しか対応しないという仕様の場合、もし、96キロとか192キロサンプリングのオーディオ信号が来た場合、無事にDA変換ができるのでしょうか?   同様に16ビット符号化までの信号しか対応しないDAコンバーターの場合、24ビットとか32ビット符号化のオーディオ信号が入ってきた場合、うまくDA変換してくれるのでしょうか? 実際のDAコンバーターでは、このような多種類のPCM信号入力に対して、どうやって処理されているのでしょうか?  入力してきた信号に対して、サンプリング周波数や符号化ビット数などの情報は、そこから自動的に検出できるようになっているのでしょうか?

  • 数字文字列をパック10進数に変換するにはどうしたらいいのでしょうか?

    "1234567"という文字列を パック10進数に変換したいのですが、 どのようにしたら良いのでしょうか? まず左に4bitシフトさせてから符号部分の4bitを うまく取り除ければ出来ると思うのですが、どう実装したら良いか分かりません。 よろしくお願いします。

  • ハフマン符号化による圧縮

    1と0からだけでできた100文字の列を4ビットごとに区切ってハフマン符号化による圧縮したいのですが、いまいちわかりません。どなたか教えてください。

    • ベストアンサー
    • Java
  • 2進数について

    16進数のEOOOと1000を16ビットの符号付きと符号なしの2進数で計算するとき E000を符号なしでの2進数にすると(1110 0000 0000 0000)になり 符号付きにすると(0010 0000 0000 0000)になります。 これを10進数に直すと先頭の00を考えないとき-8192になり 00を考えた場合8192になるのでこれはどっちがあっているのか と思って質問しまた。 また1000を2進数にすると 符号なしでは(0001 0000 0000 0000)になり 符号付きでは(1111 0000 0000 0000)になるというやり方でいいのですか? それとも000は考えないで(1 0000 0000 0000)で計算したほうがいいのでしょうか? わかるかた教えてください お願いします。

  • 3進数を10進数に変換

    3進数や5進数のように2の階乗ではない任意の進数の文字列を、C言語のビットシフトを使って10進数に変換するプログラムについて、質問させていただきます。 ビットシフトを使わないで、任意の進数の文字列を10進数に変換する方法は分かっていますが、ビットシフトを使った方が非常に計算が高速で出来るので、ビットシフトを使いたいと思っています。 下記のプログラムは4進文字列を10進整数に変換するものです。2進、8進文字列の場合は、シフトするビット数を1ビット、3ビット(つまり、ans <<= 1、ans <<= 3)にすれば計算することが可能です。しかし、3進数や5進数の場合、いろいろと考えたのですが、どのようにすれば良いのか分かりません。 下記のプログラムのようにビットシフトを使って3進数や5進数の文字列を10進数に変換するには、どのように工夫すれば良いでしょうか? どなたかご教授をお願いいたします。 #define STRING_NUM 2 /* 文字列の長さ */ int main(void) { int i; int ans = 0; /* 10進数の整数 */ char buf[STRING_NUM]; /* 4進数の文字列 */ buf[0] = '3'; buf[1] = '1'; for ( i = 0 ; i < STRING_NUM; i++ ){ printf(" %c", buf[i]); } printf("\n"); for ( i = 0 ; i < STRING_NUM; i++ ){ if ( buf[i] == '0' ){ ans <<= 2; /* シフトするビット数 */ ans |= 0; } if ( buf[i] == '1' ){ ans <<= 2; ans |= 1; } if ( buf[i] == '2' ){ ans <<= 2; ans |= 2; } if ( buf[i] == '3' ){ ans <<= 2; ans |= 3; } } printf( "ans = %d\n", ans ); return 0; }

  • 記数法(n進数)

    ① −(2D)16 を符号付絶対値 8 ビットで表す ② −(146)8 を「負数は 2 の補数で表現する」8 ビットで表す ③ 符号付絶対値 8 ビット (10110101)2 を 10 進数で表す ④「負数は 1 の補数で表現する」 8 ビット (01011001)2 を 8 進数で表す ⑤「負数は 2 の補数で表現する」 8 ビット (10111011)2 を 16 進数で表す ()の後の数字は小文字です。 n進数からm進数への変換と計算はできるようになったのですが、ビットの表現などが分からないので教えて頂きたいです。

  • 固定小数点、符号ビットを用いた方法

    固定小数点、符号ビットを用いた方法 -0.1234や-12.3456などの10進数を2進数に変換する場合、固定小数点、符号ビットをどのように設定してよいのかわかりません。

  • 10進数(+-)→2進数への変換(2)

    先ほど、ご質問させて頂きました者です、詳細にご説明させて頂きます (1)10進数:-16072 → 2進数:1100 0001 0011 1000 補足:2進数の16bit目の「1」は符号ビット「ー」 (2)10進数:+16072 → 2進数:0011 1110 1100 1000 補足:2進数の16bit目の「0」は符号ビット「+」 補足:10進数の値の範囲は    2進数で 符号1bitを含む16bitの値の範囲です と変換できるVB関数をご教示ください 宜しくお願いいたします

cps01ボビンに下糸が巻けない
このQ&Aのポイント
  • ミシンを使用中にボビンの下糸が終わったため、新しい下糸を巻こうとしても巻き付けが始まらないという問題が発生しました。
  • 適切にボビンに下糸をセットしてスタートボタンを押しているが、巻き付けが始まらない状況です。
  • ブラザー製品のcps01ミシンを使用している際に、ボビンへの下糸巻き付けができない問題が発生しています。
回答を見る