Wątek przeniesiony 2017-02-15 17:41 z C/C++ przez kq.

Binarne wartości uzyskane w wyniku wykonania operacji

0

Witam.
Czy jest ktoś w stanie wytłumaczyć jak obliczyć binarne (8bit) wartości uzyskane w wyniku wykonania operacji w C?

Np.

1<<5|1<<4
0xFF^1
0xFE<<7&0xFE<<6

Pozdrawiam

2
1<<5|1<<4

<@KrzaQ> cxx --precedence 1<<5|1<<4
<+cxx> (1<<5)|(1<<4)

110 to 0000 00012
(a) 1<<5 to 0010 00002
(b) 1<<4 to 0001 00002
Wobec tego wynik działania a|b to 0011 00002

0xFF^1

0xFF16 to 1111 11112
110 to 0000 00012
Wobec tego wynik działania xor to 1111 11102

0xFE<<7&0xFE<<6

<@KrzaQ> cxx --precedence 0xFE<<7&0xFE<<6
<+cxx> (0xFE<<7)&(0xFE<<6)

0xFE16 to 111111102

(c) 0xFE<<6 to 0011 1111 1000 00002
(d) 0xFE<<7 to 0111 1111 0000 00002

Wobec tego wynik działania c&d to 0011 1111 0000 00002

0

Mógłbyś wytłumaczyć dlaczego dodałeś siedem zer przed jedynką przy zamianie z 10 na 2?

110 to 0000 00012

(a) 1<<5 to 0010 00002

0

Pewnie. 00000001 to to samo co 0000001, 000001, 00001, 0001, 001, 01 i 1. Zera z lewej strony możesz dopisywać w nieskończoność.

Wyrównałem do 8 i 16 cyfr bo tyle najczęściej mają typy odpowiadające bajtowi i słowu.

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