বাইনারি থেকে ডেসিমেল
অ্যালগরিদম: প্রতিটি বিটকে ২-এর ঘাতের সাথে গুণ করে যোগ।
def binary_to_decimal(binary_str):
decimal = 0
n = len(binary_str)
for i, bit in enumerate(binary_str):
decimal += int(bit) * (2 ** (n - 1 - i))
return decimal
# টেস্ট
print(binary_to_decimal("1111")) # 15
print(binary_to_decimal("1010")) # 10
ডেসিমেল থেকে বাইনারি
অ্যালগরিদম: ২ দিয়ে বারবার ভাগ করে ভাগশেষ সংগ্রহ, তারপর উল্টো ক্রমে পড়া।
def decimal_to_binary(n):
if n == 0:
return "0"
bits = []
while n > 0:
bits.append(str(n % 2))
n //= 2
return ''.join(reversed(bits))
# টেস্ট
print(decimal_to_binary(15)) # 1111
print(decimal_to_binary(10)) # 1010
ইন্টারঅ্যাক্টিভ মেনু-ভিত্তিক প্রোগ্রাম
def main():
print("*****************************************************")
print(" DECIMAL TO BINARY AND BINARY TO DECIMAL CONVERSION")
print("*****************************************************")
print(" For Decimal to Binary... Press 1.")
print(" For Binary to Decimal... Press 2")
print("*****************************************************")
choice = int(input("Enter your choice: "))
if choice == 1:
dec = int(input("Enter decimal to be converted: "))
print(f"The binary of the given number is {decimal_to_binary(dec)}.")
elif choice == 2:
binary = input("Enter binary to be converted: ")
print(f"The decimal of the given binary is {binary_to_decimal(binary)}.")
else:
print("Invalid choice!")
print("******************************************************")
if __name__ == "__main__":
main()
পাইথন বিল্ট-ইন ফাংশন (দ্রুত পদ্ধতি)
# ডেসিমেল -> বাইনারি
bin(15) # '0b1111'
bin(15)[2:] # '1111' (প্রিফিক্স বাদ)
format(15, 'b') # '1111'
# বাইনারি -> ডেসিমেল
int('1111', 2) # 15
int('1010', 2) # 10
# অন্যান্য বেস
oct(15) # '0o17'
hex(15) # '0xf'
int('17', 8) # 15
int('f', 16) # 15
ফ্লোটিং পয়েন্ট কনভারশন (এডভান্সড)
ফ্লোটের জন্য IEEE 754 রিপ্রেজেন্টেশন ব্যবহার করুন:
import struct
def float_to_binary32(f):
"""32-বিট IEEE 754 বাইনারি স্ট্রিং"""
bits = struct.unpack('>I', struct.pack('>f', f))[0]
return format(bits, '032b')
def binary32_to_float(b):
"""32-বিট বাইনারি স্ট্রিং -> ফ্লোট"""
bits = int(b, 2)
return struct.unpack('>f', struct.pack('>I', bits))[0]
print(float_to_binary32(3.14)) # 01000000010010001111010111000011
print(binary32_to_float('01000000010010001111010111000011')) # 3.140000104904175