1)b=(amod2)&ba=a\2loopb=a&bto2=bendfunctionfunctionto10(var1)'二进制转十进制a=var1b=len(a)c=0dowhile(len(a)>1)d=left(a,1)a=right(a,len(a)-1)c=c+d*(2^" />
ASP中用VBScript 实现位运算的定义函数<%
function to2(var1)
'十进制转二进制
a=var1
b=""
do while (a>1)
b=(a mod 2)&b
a=a\2
loop
b=a&b
to2=b
end function
function to10(var1)
'二进制转十进制
a=var1
b=len(a)
c=0
do while (len(a)>1)
d=left(a,1)
a=right(a,len(a)-1)
c=c+d*(2^len(a))
loop
c=c+a
to10=c
end function
function setbit(var1,bit1,var2)
'设置二进制位值
'var1为十进制数,长整型(-2^63 2^63)
'bit1为需要设置的二进制位,右边开始为第1位,最高63位
'var2为需要设置的值,0或1
a=var1
b=bit1
c=var2
d=to2(a)
if b>len(d) then
tmp=var2
if b-len(d)>1 then
tmp=tmp&string(b-len(d)-1,"0")
end if
setbit=to10(d)
else
if b=1 then
d=left(d,len(d)-1)&c
setbit=to10(d)
elseif b=len(d) then
d=c&right(d,len(d)-1)
setbit=to10(d)
else
d=left(d,len(d)-b)&c&right(d,b-1)
setbit=to10(d)
end if
end if
end function
function getbit(var1,bit1)
'获取指定二进制数位上的值0或1 右边为第1位,左边为高位a=var1
b=bit1
c=to2(a)
if b>len(c) then
getbit="0"
else
getbit=mid(c,len(c)-b+1,1)
end if
end function
function bitor(var1,var2)
'二进制位或运算
a=to2(var1)
b=to2(var2)
c=len(a)
if c d="" for k=1 to c tmp1=getbit(var1,k) tmp2=getbit(var2,k) if tmp1="0" and tmp2="0" then d="0"&d else d="1"&d end if next end function function bitand(var1,var2) '二进制位与运算 a=to2(var1) b=to2(var2) c=len(a) if c d="" for k=1 to c tmp1=getbit(var1,k) tmp2=getbit(var2,k) if tmp1="1" and tmp2="1" then d="1"&d else d="0"&d end if next bitand=to10(d) end function function bitxor(var1,var2) '二进制异或运算 a=to2(var1) b=to2(var2) c=len(a) if c d="" for k=1 to c tmp1=getbit(var1,k) tmp2=getbit(var2,k) if tmp1=tmp2 then d="0"&d else d="1"&d end if next bitxor=to10(d) end function response.write "75="&to2(75)&" response.write "69 xor 75 = "&bitxor(69,75)&"
" response.write "69="&to2(69)&"
"
" response.write "69 or 75 = "&bitor(69,75)&"
" response.write "69 and 75 = "&bitand(69,75)&"
" %>