webForumDet fria alternativet
Logga in / Bli medlem

vad betyder detta ?

PHP

4 svar · 366 visningar · startad av Nickemannen

Medlem sedan aug. 20003 575 inlägg
Trådstart#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 ?

Medlem 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

Medlem 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

Medlem 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

Medlem 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.

252 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)
116 ms — ändringar (db)