あなたのバージョンにはいくつかの小さな間違いがあります。正しい解決策を示してから、間違いを示しましょう
8 進数の 24 と 16 進数の 4B があります。どちらもバイナリに変換するのはかなり簡単です。
各 8 進数は 3 桁の 2 進数を表します。
2 4
+++ +++
010 100
各 16 進数は 4 桁を表します。
4 B
++++ ++++
0100 1011
次に、補数を構築します。
~01001011
---------
10110100
を追加する必要があります。それ以外の場合は、2 つのゼロを取得します。(+0 => 00000000、-0 => 11111111)。これは実際には 2 の補数になりますが、0 境界を越えるときに奇妙な結果が必要でない限り必要です。
10110100
+00000001
---------
10110101
これで補完が完了しました。次のステップは、両方の数値を追加することです
00010100 #The Octal 24
+10110101 #The complement
---------
11001001
最初の桁は 1 で、負の値です (20 - 75 を行ったので予想どおり)。したがって、逆にする必要があります。
最初に 1 を引きます。11001000
次に、もう一度反転します00110111
。これは 10 進数の 55 です。したがって、11001001 は 10 進数の -55 です。
20 - 75 = -55
出来上がり、完了です :)
最初の小さな注意: 0x4B (= Hex 4B) をバイナリ形式に変換する際に小さな間違いを犯しました。1桁間違っています:)
また、追加するのを忘れていました。それから、あなたは私がここにいない奇妙なことをしました:
結果001000 + 1 = 001001でキャリーを追加しますが、これは間違っています
また、固定サイズの数値を使用しなかったため、結果が負かどうかを判断できませんでした。ここでは 8 ビットに固執しました (8 進数から 2 進数への変換中を除く)。(8 ビットの場合、数値の範囲は -127 から +128 になることに注意してください。) そして最後に、負の数値が表示されないため、プロセスを元に戻しませんでした。
この説明がお役に立てば幸いです:)