<< & >>
12 svar · 452 visningar · startad av Alpha II
<< 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? :)
varför blir tal >> 3 lika som tal \ 8?
Vad blir tal >> 4 lika som då? /10? :o
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.
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
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" ?
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.
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
Du har givetvis rätt PeW!
Läste inte tillräckligt noggrant... :r
Fast jag hittade en länk iaf... :e
Slutsatsen är alltså att man ska vara lite försiktig med >> och << om man inte vet vilket CPU koden kommer att snurra på. :-)