VB 负数移位 急急急……

lt114896 2012-04-26 11:32:10
求解VB负数移位怎么移,本人初学,用到VB的移位,不知道负数怎么以为,求指导,最好有源代码! 急急急……
...全文
225 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
laviewpbt 2012-04-27
  • 打赏
  • 举报
回复
Private Type LARGEINT
Long1 As Long
Long2 As Long
End Type

Private Declare Function RLIShiftLeft Lib "ntdll" Alias "RtlLargeIntegerShiftLeft" (ByVal Val1 As Long, ByVal Val2 As Long, ByVal ShiftCount As Long) As LARGEINT

Private Declare Function RLIShiftRight Lib "ntdll" Alias "RtlLargeIntegerShiftRight" (ByVal Val1 As Long, ByVal Val2 As Long, ByVal ShiftCount As Long) As LARGEINT


Tiger_Zhao 2012-04-27
  • 打赏
  • 举报
回复
http://www.excely.com/excel-vba/bit-shifting-function.shtml
类似C++中的 <<>>
熊孩子开学喽 2012-04-26
  • 打赏
  • 举报
回复
是连同符号位一起移呢,还是不带符号位移动呢
网络菜鸟00 2012-04-26
  • 打赏
  • 举报
回复
你的移位是如何定义的?
左移?右移?
给个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 Function

Function MoveLeft$(ByVal BaseNum&, MoveNum&) '左移
Dim BaseStr$, Result$
BaseStr = Oct2Bin(BaseNum)
MoveLeft = Right(BaseStr & String(MoveNum, "0"), Len(BaseStr))
MoveLeft = Bin2Oct(MoveLeft)
End Function

Function 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 Function

Function 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
内容概要:本文研究了一种针对四机并联孤岛微电网的协同控制策略,通过集成DoS攻击模拟、分布式二次控制、下垂控制与事件触发式负荷控制,旨在实现微电网在遭受网络安全威胁等异常工况下的电压与频率恢复以及有功/无功功率的精确共享分配。基于Simulink平台构建了完整的微电网仿真系统,包含多台分布式发电单元(DG),采用下垂控制实现无需通信的功率自主分配,并引入分布式二次控制以补偿由下垂特性引起的电压和频率偏差,从而提升电能质量。为进一步降低通信负担并提高系统效率,设计了事件触发机制,仅在必要时刻进行信息交互。研究重点在于多时间尺度下的协同控制架构设计,全面验证了该策略在正常运行与遭受DoS攻击等扰动情形下的稳定性、鲁棒性与恢复能力。; 适合人群:具备电力系统、自动控制理论基础,熟悉Simulink/Matlab仿真工具,从事微电网、分布式能源、智能电网及相关领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①研究孤岛微电网中电压频率恢复与功率均分的多时间尺度协同控制机制;②分析DoS网络攻击对微电网控制性能的影响及其应对策略;③掌握事件触发控制在减少通信开销中的实际应用方法;④复现并拓展具备网络安全防护能力的高级微电网控制算法仿真模型。; 阅读建议:此资源以Simulink仿真实现为核心,建议读者结合现代控制理论与网络安全知识,逐步搭建系统模型,重点关注控制器参数整定、事件触发阈值设计及DoS攻击注入方式,通过对比实验深入理解控制策略的有效性与鲁棒性。

7,788

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧