[PASCAL] Operatory Bitowe


(Kamilinformatyka) #1

Witam.

Mam problem z zadaniem z pascala,a minowicie nie wiem jak je wgl zrobić.

Dane są dwie liczby całkowite „A = 129” i „B = 193” typu BYTE. Napisz program, który

wyznaczy wartość liczby mającej najstarszy bit „A” i bit najmłodszy „B”.

Z góry Dzięki


(Pablo_Wawa) #2

Na podanym przykładzie (tylko przykładzie - byś załapał) masz tak:

A = 129, czyli binarnie 1 0000001

B = 193, czyli binarnie 1100000 1

Dla A najstarszy bit (7 bit, bo typ BYTE jest na 8 bitach trzymany) jest równy 1 (pierwszy z lewej).

Dla B najmłodszy bit też jest równy 1 (pierwszy z prawej).

Odpowiedzią zatem będzie 1 000000 1 , czyli 129.

A teraz obliczenia w Pascalu:

var A,B,C: byte;

A := 129;

B := 193;

C := (A and 128) or (B and 1);

Opis:

A and 128 (binarnie 10000000) "wyłuskuje" najstarszy (7) bit tej liczby

B and 1 (binarnie 00000001) "wyłuskuje" najmłodszy (0) bit tej liczby

Operacja "or" dodaje binarnie te liczby.

Oczywiście "wyłuskiwanie" interesujących nas bitów działa na całej liczbie, więc dla A bit nr 7 ma wartość 1, a pozostałe są zerami (dziesiętnie to liczba 128).