日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

excel vba移位运算

發布時間:2023/12/10 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 excel vba移位运算 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

office excel vba移位運算

  • 10進制轉16進制字符串
  • 左移函數
  • 右移函數

有時候要調整內存參數,或者計算相關頻率,以及通過寄存器計算對應參數的值,可以通過excel表格自動計算,不用每次手動計算,由于比較老版本的office不支持bitand,無符號long類型,當計算數值達到2的31次方時會出錯,經過反復測試,編寫了相關代碼

10進制轉16進制字符串

'10進制字符串轉帶0x開頭的16進制 Function Dec2Hex(value) Dec2Hex = "0x" + Application.WorksheetFunction.Dec2Hex(value) End Function

左移函數

'輸入為10進制和左移位數 '返回10進制字符串 '如果直接乘以2的多少次方,計算2的31次方會報錯無法計算 Function decLeftMove(value, bit) Debug.Print value; bit decLeftMove = value * Application.WorksheetFunction.Power(2, bit) Debug.Print decLeftMove End Function

例子

Function ddrctiming0(tmrd, trrd, trppb, trcd, trc, tras) ddrctiming0 = Dec2Hex(decLeftMove(tmrd, 28) + decLeftMove(trrd, 24) + decLeftMove(trppb, 19) + decLeftMove(trcd, 14) + decLeftMove(trc, 8) + decLeftMove(tras, 0)) End Function

右移函數

當16進制long類型最高位為1時,普通計算方式會出錯,先轉換成二進制字符串,然后進行移位處理,最后轉換為10進制

'返回2進制字符串 Function Hex2Bin(value) value = Format(value, "00000000") Debug.Print value For i = 1 To 8tmp = Application.WorksheetFunction.Hex2Bin(Mid(value, i, 1))outStr = outStr + Format(tmp, "0000") Next 'Debug.Print outStr Hex2Bin = outStr End Function'返回10進制字符串 Function Bin2Dec(value) strLen = Len(value) Debug.Print "strLen:"; strLen tmp = 0 For i = strLen - 1 To 0 Step -1 tmp = tmp + Mid(value, strLen - i, 1) * (2 ^ i) Next Bin2Dec = tmp End Function'bitstart 開始位0-31 'bitmask為需要多少位001為3位 Function hexRightMove(value, bitstart, bitmask) Debug.Print value; bitstart tmp = Right(value, Len(value) - 2) '去掉0x頭 Debug.Print "0x:"; tmp tmp = Hex2Bin(tmp) Debug.Print "tmp:"; tmp tmp = Right(tmp, bitstart + bitmask) Debug.Print "right:"; tmp tmp = Left(tmp, bitmask) Debug.Print "left:"; tmp tmp = Bin2Dec(tmp) Debug.Print "dec:"; tmp hexRightMove = tmp End Function

例子

Function dmctmrd(timing0) dmctmrd = hexRightMove(timing0, 28, 4) End Function


完整表格下載

===================================
作者:hclydao
http://blog.csdn.net/hclydao
版權沒有,但是轉載請保留此段聲明

======================================

總結

以上是生活随笔為你收集整理的excel vba移位运算的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。