Przesunięcia bitowe – program wyświetlający na ekran wartość składowej Green.

0

Witam wszystkich
jest to mój pierwszy post i prosiłbym o wyrozumiałość, a już przechodząc do rzeczy to chciałbym o pomoc w zrobieniu zadania

Dana jest wartosc int ARGB zainicjowana wartoscia 370208, w której zakodowano 4 kolejno nastepujace po sobie (8 bitowe) składowe koloru poczynajac od Alpha (na najstarszych bitach), przez Red, Green az po Blue (na najmłodszych bitach). Napisz program wyswietlajacy na ekran wartosc składowej Green.

ogólnie wiem jak działają przesunięcia na bitach jednak nie mam pojęcia jak zabrać się za coś takiego

0

Maskujesz i przesuwasz np. dla składowej A:

final int A_MASK = 0xFF000000;
final int R_MASK = 0x00FF0000;
int color = 0x33DDE48D;
System.out.println("Składowa A: " + ((color & A_MASK) >> 24));

Wzór masz, więc cytując klasyka: "Dalej Pinokio idzie sam".

0

wszystko spoko tylko czy mógłbyś powiedzieć dlaczego użyłeś koniunkcji color & A_MASK w tym wiejscu

2

@M igdały bo dzięki temu wyfiltrujesz sobie tylko wartości w podanych bitach. Zapisz sobie to binarnie a zrozumiesz co się dzieje.

0

Z przyzwyczajenia ;-) no i dla przykładu jak to powinno wyglądać dla pozostałych bajtów. Dla najstarszego bajtu maskowanie jest zbędne.

0

a co sądzicie o takim zapisie

i czy to jest ort! poprawnie

0

Poprawne, tak jak i inne wersje:

int color = 0x14AFA567;
System.out.printf("%X",color/256 & 0xFF);
System.out.printf("%X",color/256-(color >> 16 << 8));
System.out.printf("%X",color/0x100-color/0x10000*0x100);
...

Głowy nie dam, która wersja jest szybsza w Javie, przetestuj może coś ciekawego odkryjesz ;-)

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