Jak zmienić dowolny bit w zmiennej BYTE

0

Witam Banalne pytanie ale sobie nie moge poradzić :

ma zmienna np

A:byte

A=255 wiec jego postać binarna to 11111111

W jaki sposób w zmiennej A zmienić tylko np jeden wybrany bit

w Bascomie robiło sie to np tak A.x = 0 ,,, i wtedy bit o nr x zmieniany był na 0 , a co za tym idzie wartość dec zmiennej A również .

Jak to w delphi zrobić ?

4

A=(A)or((1)shl(bit_number)) - set
A=(A)xor((1)shl(bit_number)) - change
A=(A)and(not((1)shl(bit_number))) - reset

1

https://wiki.freepascal.org/Bit_manipulation — tutaj jest trochę przykładów (dla typu QWord, ale można sobie zmienić).

0

Jestem przekonany ze robiłem to w dużo łatwiejszy sposób . sęk w tym ze to było jakieś 10 lat temu i od tamtego czasu nie pisałem w delphi . Dziś musze napisać prosty program i się motam jak dziecko we mgle , z takimi banałami.
A może da sie to jakoś inczej ? generalnie chodzi mi zeby z ciągu binarnego np w formie stringa zrobić dec-a np '11111111' w prosty sposób otrzymać postać dec czyli 255 jak by było coś takiego strtobyte('11111111') , to by było lux . albo bintodec('11111111')

1

Moment to ty chcesz "zmienić dowolny bit" czy przedstawić "w formie stringa"?

0

wartosć zmiennej byte np A=255
postać binarna tej zmiennej A to bedzie 8 bitów -> 11111111

ja chciałbym np zamienić dowolnie wybrany bit z tych ośmiu np na 0 , wtedy np postać binarna tej zmiennej bedzie wygladać tak -> 11110111 , i tym samym zmieni sie wartość dec tej zmiennej A.

0

No to dostałeś najprostszą drogę: Jak zmienić dowolny bit w zmiennej BYTE
Sprawdź czy nie będzie ci bardziej pasować wersja od @obscurity w tym samym poście w komentarzach.
Poza tym, zawsze możesz to opakować w funkcje.

0

Ok

A=0
A=(A)or((1)shl(bit_number)

zastosowałem to tak .
Głowa już nie szczelna jak kiedyś i z czasem to wszystko co kiedyś było oczywiste gdzieś się ulatnia . Trzeba uczyć się na nowo .
Dziękuje za pomoc , choć już mogę powiedzieć ze zapewne jeszcze się tu pojawie z zapytaniami . Dziękuje jeszcze raz

1 użytkowników online, w tym zalogowanych: 0, gości: 1