webForumDet fria alternativet

bitwise AND olika i php och asp?

6 svar · 321 visningar · startad av sabbacus

sabbacusMedlem sedan juli 2002630 inlägg
#1

Tjena. Jag har de båda kodsatserna (asp och php)

Asp:

<%
 If 10 And 1 Then
	response.write "ja"
else 
	response.write "nej"
End If
%>

och

Php:

if ( 10 AND 1 )
{
	echo "ja";
}
else 
{
	echo "nej";
}

Man kan tycka att båda borde ge samma resultat, men neeeej då.
Asp-koden resulterar i ett "nej" medan Php-koden resulterar i ett "ja".

Jag sitter och konverterar asp-> php så det här är en rejäl käpp i hjulet.

Någon som kan förklara varför det blir såhär?
/M

MeleaMedlem sedan juli 20033 147 inlägg
#2

Förstår inte vad du menar, vad vill du få ut av ifsatsen?

Om 10 och 1, och sen då? Du måste ju kolla Om 10 == 1 eller dyl.

MatteMedlem sedan aug. 20002 975 inlägg
#3

Bitwise AND skrivs i PHP med &.

Testa

if ( 10 & 1 )
{
	echo "ja";
}
else 
{
	echo "nej";
}

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

MeleaMedlem sedan juli 20033 147 inlägg
#4

Det var mer än jag visste. :)

sabbacusMedlem sedan juli 2002630 inlägg
#5

Melea skrev:

Förstår inte vad du menar, vad vill du få ut av ifsatsen?

Om 10 och 1, och sen då? Du måste ju kolla Om 10 == 1 eller dyl.

Med "bitwise" kollar man hur bitarna är satta, man kan också säga att man byter talbas från vår decimala till den binära.

decimala 10 skrivs binärt som 00001010
decimala 1 skrivs binärt som 00000001

när man då jämför 10 med 1 bitwise and "menar" man alltså
00001010 AND 00000001 (eller 00001010 & 00000001 som förefaller vara det korrekta)
och då kontrollerar man (i detta fall)de kolumner som har ettor satta i sig.

   00001010
&  00000001
   -------------
   00000000

I detta fall blir "svaret" 00000000 då ingen av kolumnerna båda hade 1 i sig. Hade man istället frågat 10 OR 1 hade svaret blivit

00001011 då de tre kolumnerna har ettor i sig.

Hur det binära talsystemet fungerar och hur de olika operatorerna fungerar mm blir man upplärd med när man läser datalogi och matematik på alademisk nivå. Det är i och för sig inte så vidare svårt att greppa det, men man har inte så stor nytta av det om man inte håller på med matematik/data därför lärs det inte ut på lägre nivåer (gissar jag).

sabbacusMedlem sedan juli 2002630 inlägg
#6

Med AND ersatt av & fungerar det jättebäst.
Tackar!

MeleaMedlem sedan juli 20033 147 inlägg
#7

sabbacus: tack för förklaringen! :)

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