VB 负数移位 急急急…… 求解VB负数移位怎么移,本人初学,用到VB的移位,不知道负数怎么以为,求指导,最好有源代码! 急急急…… 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你的移位是如何定义的?左移?右移?给个BAS,不知是否满足你的需求:Option ExplicitPrivate Const BinTbl = "0000;0001;0010;0011;0100;0101;0110;0111;1000;1001;1010;1011;1100;1101;1110;1111;"Private Const HexTbl = "0123456789ABCDEF"Function MoveRight$(ByVal BaseNum&, MoveNum&) '右移 Dim BaseStr$, Result$ BaseStr = Oct2Bin(BaseNum) Debug.Print BaseStr MoveRight = Left(String(MoveNum, "0") & BaseStr, Len(BaseStr)) MoveRight = Bin2Oct(MoveRight)End FunctionFunction MoveLeft$(ByVal BaseNum&, MoveNum&) '左移 Dim BaseStr$, Result$ BaseStr = Oct2Bin(BaseNum) MoveLeft = Right(BaseStr & String(MoveNum, "0"), Len(BaseStr)) MoveLeft = Bin2Oct(MoveLeft)End FunctionFunction Oct2Bin$(ByVal Value&) Dim i&, HexValue$ Const BinTbl = "0000000100100011010001010110011110001001101010111100110111101111" HexValue = CStr(Hex$(Value)) For i = 1 To Len(HexValue) Oct2Bin = Oct2Bin + Mid(BinTbl, Val("&H" + Mid(HexValue, i, 1)) * 4 + 1, 4) Next iEnd FunctionFunction Bin2Oct$(ByVal BinValue$) Dim s As String * 4 Dim i& If Len(BinValue) Mod 4 <> 0 Then BinValue = String(4 - Len(BinValue) Mod 4, "0") + BinValue End If For i = 1 To Len(BinValue) Step 4 s = Mid(BinValue, i, 4) & ";" Bin2Oct = Bin2Oct + Mid(HexTbl, (InStr(BinTbl, s) - 1) / 5 + 1, 1) Next Bin2Oct = Val("&H" & Bin2Oct)End Function'示例Private Sub Command1_Click() Debug.Print MoveRight(-123456, 2) '右移2位End Sub http://www.excely.com/excel-vba/bit-shifting-function.shtml类似C++中的 << 和 >> 本帖最后由 bcrun 于 2012-04-30 10:24:18 编辑 帮忙解决下这问题 [求助] 超强的for循环人都看晕掉 如何获得相对路径啊!! 请教如何动态增加控件? 为什么会是“应用程序所需的对象操作不允许”? 可以在不同的窗口之间相互调用事件吗?比如说botton的click事件。 关于打印的问题(在线等候答对马上给分) 怎么用DAO连SQL Server? 请大家帮我看看这段代码。因为在98下正常,在2000下菜单没有汉字。 用VB做程序编译成一个exe,还是一个exe+多个dll好 VB中有没有控制模拟量输出的函数,例如输入SINX 十万火急救助!!!!!各位高手
左移?右移?
给个BAS,不知是否满足你的需求:
Option Explicit
Private Const BinTbl = "0000;0001;0010;0011;0100;0101;0110;0111;1000;1001;1010;1011;1100;1101;1110;1111;"
Private Const HexTbl = "0123456789ABCDEF"Function MoveRight$(ByVal BaseNum&, MoveNum&) '右移
Dim BaseStr$, Result$
BaseStr = Oct2Bin(BaseNum)
Debug.Print BaseStr
MoveRight = Left(String(MoveNum, "0") & BaseStr, Len(BaseStr))
MoveRight = Bin2Oct(MoveRight)
End FunctionFunction MoveLeft$(ByVal BaseNum&, MoveNum&) '左移
Dim BaseStr$, Result$
BaseStr = Oct2Bin(BaseNum)
MoveLeft = Right(BaseStr & String(MoveNum, "0"), Len(BaseStr))
MoveLeft = Bin2Oct(MoveLeft)
End FunctionFunction Oct2Bin$(ByVal Value&)
Dim i&, HexValue$
Const BinTbl = "0000000100100011010001010110011110001001101010111100110111101111"
HexValue = CStr(Hex$(Value))
For i = 1 To Len(HexValue)
Oct2Bin = Oct2Bin + Mid(BinTbl, Val("&H" + Mid(HexValue, i, 1)) * 4 + 1, 4)
Next i
End FunctionFunction Bin2Oct$(ByVal BinValue$)
Dim s As String * 4
Dim i&
If Len(BinValue) Mod 4 <> 0 Then
BinValue = String(4 - Len(BinValue) Mod 4, "0") + BinValue
End If
For i = 1 To Len(BinValue) Step 4
s = Mid(BinValue, i, 4) & ";"
Bin2Oct = Bin2Oct + Mid(HexTbl, (InStr(BinTbl, s) - 1) / 5 + 1, 1)
Next
Bin2Oct = Val("&H" & Bin2Oct)
End Function
'示例
Private Sub Command1_Click()
Debug.Print MoveRight(-123456, 2) '右移2位
End Sub
类似C++中的 << 和 >>