Çok harfli String'in bit dizilimini bulmak

string = input("Bir string giriniz:")
number = 0
for index in range(0, len(string)):
    number += ord(string[index]) * pow(2, 8 * index)
bitLen = int(log(number, 2)) + 1
print(f"Toplam Kaç bit:{bitLen}", f"Number Sayısının binary Hali:{bin(number)}", sep="\n")

for bitIndex in range(bitLen - 1, -1, -1):
    shiftRight = number >> bitIndex
    bitValue = shiftRight & 1
    if bitValue == 1:
        print("*", end="")
    else:
        print("-", end="")

Bu kodun genel mantığı şu siz bir kelime girersiniz o kelimenin bit dizilimi oluşur bit 0 ise - yazar bit 1 ise * yazar.
Arkadaşlar bu kod içindeki

number += ord(string[index]) * pow(2, 8 * index)

ifadesini bir türlü anlayamıyorum çıldımak üzereyim. Neden pow(2, 8 * index) işlemi yapıp ayrı olarak tek bir number sayısı oluşturuyoruz. Kafam çok dumanlı!

ikili sistemde 2 tabanından logaritmasını alıyor. Bunu yaparken unicode halini kullanıyor.

String’i 256 tabanli sayi olarak alip degerini hesapliyor. pow(2, 8 * index) (aslinda pow(256, index)) basamak degeri.

number degiskeninin kullanildigi yerlere bak: bitLen’i hesaplamak icin.


Bu arada floating point bug’i var:

Bir string giriniz:ÿÿÿÿÿ
1099511627775
Toplam Kaç bit:40
Number Sayısının binary Hali:0b1111111111111111111111111111111111111111
****************************************

Bir string giriniz:ÿÿÿÿÿÿ
281474976710655
Toplam Kaç bit:49
Number Sayısının binary Hali:0b111111111111111111111111111111111111111111111111
-************************************************
1 Beğeni