# == 10進小数から2進小数への変換 == # # -- 仕様 -- # 入力1 10進小数 小数点以下の数字列 # 入力2 2進小数の桁数 結果表示の長さ指定 # この2つの入力データを使って次を表示する #  10進小数:xxxx・・・xxx   xx・・・xは入力1のママ #  2進小数(桁数):xxxxxx・・・xxx  桁数は入力2の数値, xは"0"or"1" #  表示指定の長さ超えの有無:{”有り”|”無し”} # # 処理 # import sys # Pythonライブラリsysを導入。強制終了のためsys.exit()を使用 # # (1)データの入力 # decimalstr = input("10進小数を入力してください:") len_decimalstr = len(decimalstr) # 結果表示の長さデータの入力 bindigitsnumc = input("結果の2進小数の表示の長さを入力してください:") len_bindigitsnumc = len(bindigitsnumc) # # (2)計算リストの準備 # cal_list = [0] # cal_list[]は10進数に2をかけて桁上がりするかを検出するために使用 # 先頭の要素は0にセット。この要素はその後の×2の計算で最終的に桁上がりしたとき1になる # この第1要素の値が結果のビット列を構成する # cal_list[]の要素数はlen_decimalstr+1である # 入力したdecimalstr内に数字以外の文字が指定されているかチェック # 正しければ、char_list[]に各10進数字に対する数値を追加 i = 0 while(i 9: # 下の桁の値は常に8以下。なぜなら最大でも2×9=18だから cal_list[j] = wint % 10 + ovint ovint = 1 else: cal_list[j] = wint + ovint ovint = 0 frac_zero += cal_list[j] j -= 1 cal_list[0] = ovint wc = str(cal_list[0]) # cal_list[0]は整数だから文字列に変換する result_str += wc[-1] # 変換された文字列の最後の1文字を表示用文字列に追加する if frac_zero == 0: over = 0 break i += 1 # # (5)結果の表示 # print ("10進小数:", decimalstr) print ("2進小数({0}桁):".format(bindigitsnum),result_str) if over == 0: print ("表示指定の長さ超えの有無:”無し”") else:print ("表示指定の長さ超えの有無:”有り”") # # (6)プログラムの終了 #