十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
1左移10位,1后面加10个0
创新互联公司是一家集网站建设,永兴企业网站建设,永兴品牌网站建设,网站定制,永兴网站建设报价,网络营销,网络优化,永兴网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
结果就是:10000000000
五、按位运算符
注意不能在VB.Net中直接使用以下二进制数,使用时需转换为相应的十六或十进制数字。
1. 表示按位左移,空缺处补0。如:101101 2 结果为 110100
2. 表示按位右移,如:101101 2 结果为 001011
第一步,先把整形变量数(有正有负)转化为2进制数存放在一个Byte(0 to 1)中
Dim MyB(1) as byte
if N =0 then
Myb(0)= N \ 256 //高位
Myb(1)= N mod 256 //低位
else
tmp=N*(-1)
Myb(0)= tmp \256
Myb(1)= tmp mod 256
Myb(0)= Not(Myb(0) and H80) //将符号位取反
Myb(1)= Not(Myb(1)) +1
//以上两行是先求出正数N的二进制表示方法,然后把最高位置1(这样就是-N的原码了)
//然后把所有位都取反,末尾+1,这样就是-N的补码形式了,在计算机中负数是补码来存放的。
end if
转化好以后就是移位操作了,意味操作代码如下(假定你要移动N位)
For i=1 to N
SaveHi = Myb(0) '保存高位,是为了判断右移时是否向低位字节进1
'以下是右移 ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '
Myb(0) = Myb(0) \ 2 '右移不会溢出的
Myb(1)= Myb(1) \ 2
If ((SaveHi And H1) = H1) Then
Myb(1) = Myb(1) Or H80
End If
Next
如果是左移,也是一样:
For i=1 to N
SaveLo = Myb(1) '保存低位,是为了判断左移时是否向高位字节进1
'以下是右移 ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '
Myb(0) = (Myb(0) * 2) mod HFF '要取余,不然会溢出
Myb(1) = (Myb(1) * 2) mod HFF
If ((SaveLo And H80) = H1) Then
Myb(0) = Myb(0) Or H01 '高位进一
End If
Next
对位模式执行数学左移位。
result = pattern amount
各部分说明
result
必选。整型数值。对该位模式进行移位的结果。数据类型与 pattern 的数据类型相同。
pattern
必选。整型数值表达式。要进行移位的位模式。数据类型必须为整型(SByte、Byte、Short、UShort、Integer、UInteger、Long 或 ULong)。
amount
必选。数值表达式。要将该位模式移位的位数。数据类型必须为 Integer 或扩展到 Integer。
备注
数学移位不是循环的,即不会将在结果的一端移出的数位从另一端重新移入。在数学左移位运算中,丢弃移出结果数据类型范围的数位,而将右端空出的数位位置设置为零。
为防止移位的结果超出它所支持的位数,Visual Basic 使用与 pattern 的数据类型相对应的大小掩码来屏蔽 amount 的值。可使用这些值的二进制与运算结果作为移位量。大小掩码如下所示:
pattern数据类型 掩码(十进制)掩码(十六进制)
SByte, Byte 7 H00000007
Short, UShort 15 H0000000F
Integer, UInteger 31 H0000001F
Long, ULong 63 H0000003F
如果 amount 为零,则 result 的值与 pattern 的值相同。如果 amount 为负值,则将把它作为无符号的值,并使用相应的大小掩码进行屏蔽。
数学移位绝不会产生溢出异常。