webForumDet fria alternativet

<< & >>

12 svar · 452 visningar · startad av Alpha II

Alpha IIMedlem sedan maj 20002 993 inlägg
#1

Vad betyder << och >>?

    mask = 2 << (x & 0x7);
    col = x >> 3;
SweyMedlem sedan apr. 20003 971 inlägg
#2

<< skiftar åt vänster och >> åt höger.
Skiftning innebär att man flyttar alla bitar i ett tal åt höger eller vänster. En skiftning åt vänster en gång innebär att talet dubbleras. En skiftning åt höger en gång innebär att talet halveras.

tal << 1 får samma resultat som tal * 2.
tal >> 3 får samma resultat som tal / 8.

Förstår du? :)

Alpha IIMedlem sedan maj 20002 993 inlägg
#3

varför blir tal >> 3 lika som tal \ 8?

Alpha IIMedlem sedan maj 20002 993 inlägg
#4

Vad blir tal >> 4 lika som då? /10? :o

SweyMedlem sedan apr. 20003 971 inlägg
#5

Ursprungligen av Alpha II Vad blir tal >> 4 lika som då? /10? :o

Nej, 16.

>>1 = / 2
>>2 = / 4
>>3 = / 8
>>4 = / 16

Vad som händer är att bitarna förflyttar sig.

Exempel:
11100011
>> 1
01110001 (1 faller bort)

Här förflyttar sig alla bitar i byten åt höger en gång. Biten längst åt höger faller bort.

En skiftning åt vänster ser istället ut så här.
11100011
<< 1
11000110

Nu faller biten längst till vänster bort. En nollbit kommer in från höger och fyller tomrummet.

PeWMedlem sedan juni 200010 432 inlägg
#6

Alpha II ->

how come?
Basen 2 kanske? ;)

48 >>4:

110000 = 1*2^5+1*2^4+0*2^3+0*2^2+0*2^1+0*2^0 = 48
011000 = 0*2^5+1*2^4+1*2^3+0*2^2+0*2^1+0*2^0 = 24
001100 = 0*2^5+0*2^4+1*2^3+1*2^2+0*2^1+0*2^0 = 12
000110 = 0*2^5+0*2^4+0*2^3+1*2^2+1*2^1+0*2^0 = 6
000011 = 0*2^5+0*2^4+0*2^3+0*2^2+1*2^1+1*2^0 = 3
BeatboxMedlem sedan okt. 20013 217 inlägg
#7

Hur funkar det på en CPU som har Intel-arkitektur då den har omvänd byteordning jämfört med t ex Motorola ? Är detta nått som kompilatorn kommer att ta hänsyn till och "fixa till det bakom kulisserna" ?

PeWMedlem sedan juni 200010 432 inlägg
#8

Intressant fråga. :)

Är det en strikt bitmanipulation mot maskinkod, eller är det bitmanipulation på en högre (kompilator)nivå :q

Det händer ju att man måste konvertera det ena formatet till det andra m.m.. och då brukar man använda bitoperatorn ihop med en buffert för konverteringen.

PhorpherMedlem sedan feb. 20002 300 inlägg
#9

Ja, det "fixar till sig".. :h

http://www.visualcoders.com/software/guides/bitwise-redfiter.shtml

PeWMedlem sedan juni 200010 432 inlägg
#10

Fixar till sig?

It must be noted, however, that neither system is better than the other in this respect, but it is very important to be aware of the byte order of the system you are working with, especially when you are doing bitwise operations

Mao bör man vara medveten om vad systemet har för byteordning när man ska utföra en bitoperation :bire

PhorpherMedlem sedan feb. 20002 300 inlägg
#11

Du har givetvis rätt PeW!

Läste inte tillräckligt noggrant... :r

Fast jag hittade en länk iaf... :e

PeWMedlem sedan juni 200010 432 inlägg
#12

Du har givetvis rätt PeW!

Weeeeee! :birp

;)

BeatboxMedlem sedan okt. 20013 217 inlägg
#13

Slutsatsen är alltså att man ska vara lite försiktig med >> och << om man inte vet vilket CPU koden kommer att snurra på. :-)

133 ms totalt · 3 externa anrop · v20260731065814-full.2b84b982
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)