10進数から2進数:2の補数、ネガの表現の改善

ジョルゴサン

たとえば、-2または-8を指定すると、110、11000が得られます。ただし、最小の2進数を使用する必要があるため、10、1000を取得したいと思います。だから私は否定的なものに別の方法を使用する必要があります。LSB 1に到達するまで1と0を交換しようとしましたが、方法が見つかりません。

(あなたを助けるために:dekadikos = demical、diadikos =バイナリ、boith =アシスタント)

 dekadikos = input()
 while dekadikos != "end" :
     dekadikos = int(dekadikos)  
     if dekadikos > 0 :
         diadikos = bin(dekadikos)
         diadikos = (diadikos[2:])
         n = int(len(diadikos)) + 1
         print(diadikos.zfill(n))
     elif dekadikos == 0 :
         diadikos = bin(dekadikos)
         diadikos = (diadikos[2:])
         print(diadikos)
     else :
         dekadikos = abs(dekadikos)
         diadikos = bin(dekadikos)
         diadikos = (diadikos[2:])
         n = int(len(diadikos)) + 1
         diadikos = diadikos.zfill(n)
         boithdekadikos = 2**n - dekadikos
         diadikos = bin(boithdekadikos)
         diadikos = diadikos[2:]
         print (diadikos)
 dekadikos = input()
トリンコット

最後のelseブロック(コメント付き)のコードに2つの変更を加えることで、これを解決できます

else :
  dekadikos = abs(dekadikos)
  diadikos = bin(dekadikos-1) # subtract 1
  diadikos = (diadikos[2:])
  n = int(len(diadikos)) + (dekadikos>1) # add 1 except for 1
  diadikos = diadikos.zfill(n)
  boithdekadikos = 2**n - dekadikos
  diadikos = bin(boithdekadikos)
  diadikos = diadikos[2:]
  print (diadikos)

しかし、希望する結果を得るには長い方法のようです。1つはformat(dekadikos, 'b')0b接頭辞なしで数値の2進表現を取得するために使用できます

代わりにこれを行うことができます。これは、正、ゼロ、および負をカバーします。

dekadikos = int(dekadikos)
diadikos = '0' + format(abs(dekadikos)-(dekadikos<0), 'b')
if dekadikos == 0:
    diadikos = '0'
elif dekadikos < 0:
    diadikos = format(2**(len(diadikos)-(dekadikos==-1)) + dekadikos, 'b')
print (diadikos)

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

2の補数を含む10進数から2進数

分類Dev

Javaの2の補数の16進数を10進数に

分類Dev

2の補数をその2進表現に変換する

分類Dev

10進数から2進数への関数、Python

分類Dev

2進数から10進数(膨大な数の場合)

分類Dev

Swift:符号付き2の補数Uint8から10進数への16進数

分類Dev

Javaでの10進数から2進数への変換

分類Dev

Javaでの10進数から2進数への割り当て

分類Dev

Cでの10進数から2進数への変換

分類Dev

C ++での2進数から10進数への変換

分類Dev

2進数のASCIIから10進数への変換

分類Dev

2進数のASCIIから10進数への変換

分類Dev

10進数からcの2進数への障害

分類Dev

負の10進数から2進数のcコード

分類Dev

Pythonの16進数の2の補数

分類Dev

10進数から2進数への変換

分類Dev

10進数から2進数の自己チャレンジ

分類Dev

10進数から2進数のPythonアルゴリズム

分類Dev

2進数から10進数へのc

分類Dev

コンピューターの10進数から2進数

分類Dev

10進数から2進数への変換C ++

分類Dev

2進数から10進数への再帰

分類Dev

10進数から2進数へのコンバーター

分類Dev

10進数から2進数への変換エラー

分類Dev

10 進数から 2 進数への変換

分類Dev

10進数から2進数の間違った出力

分類Dev

10進数の2進数の近傍

分類Dev

Cの2進数から12進数および16進数

分類Dev

Excelの12桁の数値の8進数から2進数