位置情報で子どもの居場所をお知らせ

16進数の場合(ADFの補数を求める)
16の補数
1000 - ADF = 521
15の補数
FFF - ADF = 520
の求め方が分かりません。
是非、教えてください。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

2進にしてビット反転するのがいいと思うが、どうしても16進で考えたいなら、つぎ、



  1000   16  0  0  0    0 15 15 16
-  ADF   -   10 13 15  -   10 13 15 
   521        5  2  1        5  2  1

   FFF      15 15 15
 - ADF    - 10 13 15
   520       5  2  0 
    • good
    • 0

まず15の補数ですが2進でのビット反転が基本です。


それをFFF-ADFのように引き算でやっても同じ結果が出ます。
FFF   
ADF   1010 1101 1111 ビット反転
---
520   0101 0010 0000 → 520

16の補数は15の補数+1です。
従ってFFF+1→1000から引くか
ビット反転して1を足します。
    • good
    • 2

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q16進数の表し方について

すごく基本的なことだと思いますが、教えてください。
-128など、負の数を16進数で表す場合どのように表したら、
よいのですか。

Aベストアンサー

> ただ、まだ、-128が80Hになるのがわかりません。

2進数から16進数への変換は理解されているでしょうか?
-128を8ビットの2進数の2の補数で表現すると 10000000 なので、これを16進数にすると、80(Hex)になります。

数学では、何進数だろうが数値の前にマイナスを付けることで、負の数を表現できますが、
カテゴリがコンピュータなのでコンピュータ内部での負の数の扱い方という観点から説明しました。
負の数の表現には、2の補数以外にも、1の補数、符号ビット+絶対値、エクセス表現などがありますが、
2の補数(n進数のnの補数)は、減算を加算回路で計算できるという利点があるため広く使われています。

10000000だと、128なのか、-128なのか分からないじゃないか、と思われるかも知れませんが、
プログラマが、その時々に符号付き整数を扱っているのか、符号なし整数を扱っているのか、
認識していれば(又はコンパイラに指示をしていれば)混乱はありません。

http://mt-net.vis.ne.jp/ADFE_mail/0041.htm
http://www.sist.ac.jp/~suganuma/cpp/1-bu/1-sho/1-sho.htm

> ただ、まだ、-128が80Hになるのがわかりません。

2進数から16進数への変換は理解されているでしょうか?
-128を8ビットの2進数の2の補数で表現すると 10000000 なので、これを16進数にすると、80(Hex)になります。

数学では、何進数だろうが数値の前にマイナスを付けることで、負の数を表現できますが、
カテゴリがコンピュータなのでコンピュータ内部での負の数の扱い方という観点から説明しました。
負の数の表現には、2の補数以外にも、1の補数、符号ビット+絶対値、エクセス表現などがあります...続きを読む

QExcel 16進数

Excelで16進数を(2の補数などで)負の数の10進数に変換するやり方を
教えてください。

Aベストアンサー

>それでは、負の数にはならないんじゃないですか?
HEX2DECで扱う幅より小さい場合は、
便宜的に以下のようにすればいいかと思います。
=IF(HEX2DEC(A1)<16^LEN(A1)/2,HEX2DEC(A1),HEX2DEC(A1)-16^LEN(A1))

Q補数

10進数の2の補数は8
8進数の7の補数は1
2進数の1の補数は1
10進数の9の補数は4
と授業でやりました。
なぜこのようになるのか全くわかりませんでした。
過程を詳しく知りたいです。

Aベストアンサー

一応、定義としては、
「補数(ほすう)とは、ある基数法において、ある自然数 a に足して桁が1つ上がるような最小の数のことを言う。」
とのことです。

以下、10進数の場合で話します。
10進数のばある数に別の数を足した時に、桁上がり最小の数のことです。
2の場合は8です。2+8=10なので。

一の位+一の位=十の位。
どちらか片方が、決まった場合の、もう片方の数を補数と言います。


それぞれの進数の場合も同じです。

ちなみに、質問の中の
「10進数の9の補数は4」と言うのは間違いだと思います。
正確には、「1」であるはずです。

Q1文字って1バイトだったっけ?

タイトルの通りなんですが
私の記憶では1文字1バイトで漢字が2バイトだったような・・・。
アルファベットは?数字は?わかんないので教えてください。
それと、1バイト=8ビットですよね?
ちょっと興味があるので暇のある方がおられましたら詳しく教えてほしいです。

よろしくおねがいいたします。

Aベストアンサー

全角文字(英語・漢字・数字問わず):2バイト
半角文字:1バイト
では無いでしょうか?

>1バイト=8ビット
その通りです

http://www.pc-view.net/Help/manual/0082.html
などもありますので参考までに

参考URL:http://www.pc-view.net/Help/manual/0082.html

Q8・16進数の引き算を教えてください。

プログラミングの知識全くありません。本日PCスクールで進数の引き算を勉強したのですが全く分かりません。。。桁下げって物が私の無能の頭では理解できないのです。下記の問題を手取り足取り解説頂けると助かります。ちなみに先生からは一度2進数に直して計算し、最後に8進数・16進数に戻すように指導されたので、そのとおり教えて頂けるとうれしいです。

(1)234(8)ー37(8)
(2)7543(8)-6756(8)
(3)3C(16)-1E(16)

Aベストアンサー

説明不足で申し訳ありませんでした。
010000000=001111111+1
は取りあえず置いておいて

逆から考えて行きましょう
前回答を逆からなぞって下さい。
答えである『00111101』は既に+1されていますので、
これを分離して元の『+1』にします
すると00111100と+1になります
※この『+1』は脇に置いて残して置きます。そうすると残ったのは00111100ですね
次に00111100は00000011を《引き算》したものなので、元の形にするには逆に足し算してあげる必要があります
+00111100 ←段差が付くので+を先頭に付属
+00000011
すると00111111になりますね
で脇に残しておいた『+1』を付け足すと
00111111+1になってこれを加えてやると
+00111111
+00000001
すると01000000になります。
ここで注目するの00111111から一桁上がって01000000になっている点
逆に言えば『+1』の形にすれば一桁下がって00111111になっていますよね
pekopokoniさんの質問される『桁下げ』の意味は、今回も前回も最後に行われる『+1』の取り扱いな訳です。
補足にありました
1 111 112←隣の桁から借りてきた値(合ってるか怪しい)
の最後の2は『+1』の意味です

よって010000000から『桁下がり』するという事は『+1』を分離させて桁を下げ計算し、また『+1』してあげる事になります。

補足
01000000 ←7桁目が1
00111111 ←6桁目まで1
7桁>6桁 ※不等号

説明不足で申し訳ありませんでした。
010000000=001111111+1
は取りあえず置いておいて

逆から考えて行きましょう
前回答を逆からなぞって下さい。
答えである『00111101』は既に+1されていますので、
これを分離して元の『+1』にします
すると00111100と+1になります
※この『+1』は脇に置いて残して置きます。そうすると残ったのは00111100ですね
次に00111100は00000011を《引き算》したものなので、元の形にするには逆に足し算してあげる必要があります
+00111100 ←段差が付くので+を先頭に付属
...続きを読む

QExcel関数 16bit→32bi符号付き整数

お世話になります。

Excel2010にて、16bit符号付き整数の上位・下位の値が元データとしてあり、
それを32bit符号付き整数に関数を使って変換したいのですが、方法がわからず、質問させて頂きます。


セルA1に下位用 -1640
セルA2に上位用 -1
の時に
セルA3に32bit符号付き整数表示

わかられます方、ご助力のほどよろしくお願い致します。

Aベストアンサー

=IF(MOD(A2,65536)<32768,MOD(A1,65536)+MOD(A2,65536)*65536,MOD(A1,65536)+MOD(A2+32768,65536)*65536-2147483648)
で行けるかと思われます。

Qjavaで判別式のプログラミングを作りたいのですが

javaで二次方程式ax2+bx+c=0が,2つの異なる実数解をもつ,実数の重解をもつ,実数解をもたないのいずれであるかを判別するプログラムを作りたいのですが、

何度実行しても正しい答えが出てくれません。なぜでしょうか?
import java.util.Scanner;


class Kadai {

public static void main(String args[]) {

Scanner sc = new Scanner(System.in);

int a,b,c,d;

System.out.println("二次方程式y=ax^2+bx+cの解を判別します。");

System.out.print("aを入力してください。:");

a = sc.nextInt();

System.out.print("bを入力してください。:");

b = sc.nextInt();

System.out.print("cを入力してください。:");

c = sc.nextInt();

d=b^2-4*a*c;

System.out.println("y="+a+"x^2+"+b+"x+"+c+"の判定は以下の通りです。");

if(d>0){

System.out.println("判別式D>0");

System.out.print("2つの異なる実数解をもつ。");

}

if(d==0){

System.out.println("判別式D=0");

System.out.print("実数の重解をもつ。");

}

if(d<0){

System.out.println("判別式D<0");

System.out.print("実数解をもたない。");

}

}

}

これを実行すると下の画像のように異なる結果が出てしまいます。
この場合、正しくは実数の重解を持つですよね?

どこが間違っているか指摘してくださると嬉しいですm(_ _)m

javaで二次方程式ax2+bx+c=0が,2つの異なる実数解をもつ,実数の重解をもつ,実数解をもたないのいずれであるかを判別するプログラムを作りたいのですが、

何度実行しても正しい答えが出てくれません。なぜでしょうか?
import java.util.Scanner;


class Kadai {

public static void main(String args[]) {

Scanner sc = new Scanner(System.in);

int a,b,c,d;

System.out.println("二次方程式y=ax^2+bx+cの解を判別します。");

System.out.print("aを入力してください。:");

a = sc.nextInt();
...続きを読む

Aベストアンサー

> d=b^2-4*a*c;

Java における ^ は、べき乗を求める演算子ではありません。

Q16進数を正負反転する方法

16進数を正負反転して16進数で表す方法を教えていただきたいです。
正負反転したい16進数は587FC0B4です。

16進数587FC0B4を2進数で表して
1011000011111111100000010110100
反転して
0100111100000000011111101001011
これに+1をして
0100111100000000011111101001100
16進数に直して「27803F4C」これが正解だと思ったのですが答えと違っていてどこが誤っているのかわかりません。
解説よろしくお願いします。

Aベストアンサー

16進数587FC0B4を2進数で表して
1011000011111111100000010110100

ということですが、先頭に0が1つ足りないのでは?

見当違いならごめんなさい。

Qエクセルで計算すると2.43E-19などと表示される。Eとは何ですか?

よろしくお願いします。
エクセルの回帰分析をすると有意水準で2.43E-19などと表示されますが
Eとは何でしょうか?

また、回帰分析の数字の意味が良く分からないのですが、
皆さんは独学されましたか?それとも講座などをうけたのでしょうか?

回帰分析でR2(決定係数)しかみていないのですが
どうすれば回帰分析が分かるようになるのでしょうか?
本を読んだのですがいまいち難しくて分かりません。
教えてください。
よろしくお願いします。

Aベストアンサー

★回答
・最初に『回帰分析』をここで説明するのは少し大変なので『E』のみ説明します。
・回答者 No.1 ~ No.3 さんと同じく『指数表記』の『Exponent』ですよ。
・『指数』って分かりますか?
・10→1.0E+1(1.0×10の1乗)→×10倍
・100→1.0E+2(1.0×10の2乗)→×100倍
・1000→1.0E+3(1.0×10の3乗)→×1000倍
・0.1→1.0E-1(1.0×1/10の1乗)→×1/10倍→÷10
・0.01→1.0E-2(1.0×1/10の2乗)→×1/100倍→÷100
・0.001→1.0E-3(1.0×1/10の3乗)→×1/1000倍→÷1000
・になります。ようするに 10 を n 乗すると元の数字になるための指数表記のことですよ。
・よって、『2.43E-19』とは?
 2.43×1/(10の19乗)で、
 2.43×1/10000000000000000000となり、
 2.43×0.0000000000000000001だから、
 0.000000000000000000243という数値を意味します。

補足:
・E+数値は 10、100、1000 という大きい数を表します。
・E-数値は 0.1、0.01、0.001 という小さい数を表します。
・数学では『2.43×10』の次に、小さい数字で上に『19』と表示します。→http://ja.wikipedia.org/wiki/%E6%8C%87%E6%95%B0%E8%A1%A8%E8%A8%98
・最後に『回帰分析』とは何?下の『参考URL』をどうぞ。→『数学』カテゴリで質問してみては?

参考URL:http://ja.wikipedia.org/wiki/%E5%9B%9E%E5%B8%B0%E5%88%86%E6%9E%90

★回答
・最初に『回帰分析』をここで説明するのは少し大変なので『E』のみ説明します。
・回答者 No.1 ~ No.3 さんと同じく『指数表記』の『Exponent』ですよ。
・『指数』って分かりますか?
・10→1.0E+1(1.0×10の1乗)→×10倍
・100→1.0E+2(1.0×10の2乗)→×100倍
・1000→1.0E+3(1.0×10の3乗)→×1000倍
・0.1→1.0E-1(1.0×1/10の1乗)→×1/10倍→÷10
・0.01→1.0E-2(1.0×1/10の2乗)→×1/100倍→÷100
・0.001→1.0E-3(1.0×1/10の3乗)→×1/1000倍→÷1000
・になります。ようするに 10 を n 乗すると元の数字になるた...続きを読む

Qエクセル2010で2進数の計算をするには

エクセル2010を使って2進数の乗算と加算を複数回行い、最後にそれぞれの答えをすべて加算したいのですが、こういうことは可能でしょうか。
また、最後の答えをすべて加算したときの桁数は100桁程度になると思います。
(できれば10進数をキーボードから入力すれば2進数の変換から複数回の乗算と加算などを自動で計算できれば大変ありがたいのですが)

書店で参考書を探したのですが、10進数→2進数、2進数→10進数の変換については載っているのですが、2進数の計算についてはどの本にも記述がありませんでした。

どうぞよろしくお願いします。

Aベストアンサー

2 進数では、乗法や除法も定義されます。0 x 0 = 0、0 x 1 = 0、1 x 0 = 0、1 x 1 = 1 となります。これを使うと、当たり前かもしれませんが、筆算もできます。例えば次のとおりです。

  1 0 1   =      1 x 2^2 + 0 x 2^1 + 1 x 2^0 = 5
x   1 1   =           1 x 2^1 + 1 x 2^0 = 3
―――――
  1 0 1
 1 0 1
―――――
 1 1 1 1   = 1 x 2^3 + 1 x 2^2 + 1 x 2^1 + 1 x 2^0 = 15


「整数である 2 進数」同士の計算そのものは、例えば =BIN2DEC(10)*BIN2DEC(110) といった具合にできるからいいのですが、質問文を読むと、桁数があまりにも多すぎなことが問題だと思います。

2^(100-1) = (2^100)/2
     = {(2^10)^10}/2
     = (1024^10)/2
     > (1000^10)/2
     = {(10^3)^10}/2
     = (10^30)/2
     = 5 x 10^29

となり、たとえ 10 進数で表示しても、0 が 29 個も並んだ数よりも更に大きいことになるわけだから、天文学的どころでは済まない、途方もない数だと分かります。せめて対数を取るくらいの工夫は必要でしょう。Excel の対数としては、LOG、LOG10、LN 関数が使えます。log x + log y = log xy というふうに、和から積を作れるのでしたね。

また、Excel の仕様では、誤差なく計算できる最大の桁数は 15 桁です。特に対数を取らない場合は、その点にも注意が必要です。


それから、BIN2DEC 関数は、符号を含めて 10 ビットまでの整数にしか対応できないことにも注意してください。つまり数字の部分は 9 ビットなので、-512 以上 511 以下の整数です。

小数も扱うには、(1)元の数を何倍かして小数点以下をなくす(整数化する)方法とか、(2)ユーザー定義関数その他の方法により 2 進の小数を 10 進の小数に直し、計算後に 10 から 2 に戻す方法などが考えられます。何倍かすると言っている意味は、10 進数を 10 倍すると小数点が右に一つ移動するのと同様に、2 進数では倍にすると小数点が動くという性質を使うということです。

次のページを参考にしてください。

2 進小数の求め方 http://oshiete.goo.ne.jp/qa/6756230.html
2 進小数の加法  http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1486952069

2 進数では、乗法や除法も定義されます。0 x 0 = 0、0 x 1 = 0、1 x 0 = 0、1 x 1 = 1 となります。これを使うと、当たり前かもしれませんが、筆算もできます。例えば次のとおりです。

  1 0 1   =      1 x 2^2 + 0 x 2^1 + 1 x 2^0 = 5
x   1 1   =           1 x 2^1 + 1 x 2^0 = 3
―――――
  1 0 1
 1 0 1
―――――
 1 1 1 1   = 1 x 2^3 + 1 x 2^2 + 1 x 2^1 + 1 x 2^0 = 15


「整数である 2 進数」同士の計算そのものは、例えば =BIN2DEC(10)*BIN2DEC(110) といった具合にでき...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング