webForumDet fria alternativet

vad betyder detta ?

4 svar · 366 visningar · startad av Nickemannen

NickemannenMedlem sedan aug. 20003 575 inlägg
#1

Hej jag håller på att översätta lite php kod men jag
har kört lite fast på en grej
kan någon säga vad denna gör ?

ord($data[1])<<8)+(ord($data[2])<<16

ord vet jag vad det e men

<<8 och sedan nästa <<16 är det att den byter bitar eller vad e det ?

MatteMedlem sedan aug. 20002 975 inlägg
#2

Betyder ungefär 'flytta 8 bitar åt vänster'.

http://www.php.net/manual/en/language.operators.bitwise.php

NickemannenMedlem sedan aug. 20003 575 inlägg
#3

Aahh, okej tack

En fråga till varför skulle man vilja göra det ? fattar inte riktigt

Alpha IIMedlem sedan maj 20002 993 inlägg
#4

Det skulle jag också vilja veta!

Det enda§ jag har fattat är att tex:
10 << 1 = 5
10 >> 1 = 20

sgtpepperMedlem sedan apr. 20007 588 inlägg
#5

En fråga till varför skulle man vilja göra det ? fattar inte riktigt

Det kan finnas en och miljoner anledningar till det, vad gör t.ex applikationen som du tagit kodsnutten ifrån?

Det skulle jag också vilja veta!

Det enda§ jag har fattat är att tex:
10 << 1 = 5
10 >> 1 = 20

Fel, 10 << 1 (flytta bitarna ett steg vänster) blir 20 och 10 >> 1 (flytta bitarna ett steg höger) blir 5.

Varför får man detta resultat? Jo, förutsatt att man förstår binär aritmetik:

decimalt 10 representeras binärt av 00001010, flyttar man bitarna ett steg vänster så fås det binära talet 00010100:

00001010
00010100 <--- bitarna skiftat ett steg vänster

00010100 i decimalform är 20.

Samma sak höger:

00001010
00000101 <--- bitarna skiftat ett steg höger = 10.

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