Jak zmienić dowolny bit w zmiennej BYTE

Jak zmienić dowolny bit w zmiennej BYTE
R2
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Będzin
  • Postów: 45
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ć ?

_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
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

flowCRANE
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Tuchów
  • Postów: 12269
1

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

R2
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Będzin
  • Postów: 45
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')

_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
1

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

R2
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Będzin
  • Postów: 45
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.

_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
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.

R2
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Będzin
  • Postów: 45
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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.