VB.NET控制臺程序:
公司主營業務:做網站、成都網站設計、移動網站開發等業務。幫助企業客戶真正實現互聯網宣傳,提高企業的競爭能力。創新互聯建站是一支青春激揚、勤奮敬業、活力青春激揚、勤奮敬業、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業文化,感謝他們對我們的高要求,感謝他們從不同領域給我們帶來的挑戰,讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創新互聯建站推出襄城免費做網站回饋大家。
Module module3
Sub Main()
Dim i As Integer
Dim num As Integer = -35
Dim R As Integer = 8
Dim arr(33) As Integer
Dim len As Integer
arr = TransToR(num, R)
len = arr(0)
Console.Write(num " 轉換成 " R " 進制后:" vbTab)
If (arr(1) = 1) Then
Console.Write("-")
End If
For i = len + 1 To 2 Step -1
Console.Write(arr(i))
Next
Console.WriteLine()
arr = TransToSourceCode(num)
Console.Write(num " 轉換成32位二進制源碼后:" vbTab)
Console.Write(arr(1))
For i = 32 To 2 Step -1
Console.Write(arr(i))
Next
Console.WriteLine()
arr = TransToReverseCode(num)
Console.Write(num " 轉換成32位磨洞二進制反碼后:" vbTab)
Console.Write(arr(1))
For i = 32 To 2 Step -1
Console.Write(arr(i))
Next
Console.WriteLine()
arr = TransToCompensatoryCode(num)
Console.Write(num " 轉換成32位二進制補碼后:" vbTab)
Console.Write(arr(1))
For i = 32 To 2 Step -1
Console.Write(arr(i))
Next
Console.WriteLine()
End Sub
'將十進制數num轉換為R(2=R=9)進制數,結果存在arr數組中
'arr(0)存儲長度, arr(1)存儲符號位:1為負,0為正
Function TransToR(ByVal num As Integer, ByVal R As Integer) As Integer()
Dim arr(33) As Integer
arr(0) = 0 '初始長度
'孫好設置符號位
If (num 0) Then
arr(1) = 1
Else
arr(1) = 0
End If
num = Math.Abs(num)
While num 0
arr(0) = arr(0) + 1
arr(arr(0) + 1) = num Mod R
num \= R
End While
Return arr
End Function
'瞎凱枯將十進制數num轉換為二進制原碼
Function TransToSourceCode(ByVal num As Integer) As Integer()
Dim arr(33) As Integer
Dim i As Integer
arr = TransToR(num, 2)
'高位補零
For i = arr(0) + 2 To 32
arr(i) = 0
Next
arr(0) = 32
Return arr
End Function
'將十進制數num轉換為二進制反碼
Function TransToReverseCode(ByVal num As Integer) As Integer()
Dim arr(33) As Integer
Dim i As Integer
arr = TransToSourceCode(num)
If num = 0 Then
Return arr
End If
'除符號位外各位取反
For i = 2 To 33
arr(i) = 1 - arr(i)
Next
Return arr
End Function
'將十進制數num轉換為二進制補碼
Function TransToCompensatoryCode(ByVal num As Integer) As Integer()
Dim arr(33) As Integer
Dim i As Integer
Dim c As Integer = 0 '進位
arr = TransToReverseCode(num)
If num = 0 Then
Return arr
End If
'末尾加1
i = 2
arr(i) += 1
Do While True
arr(i) = c + arr(i)
c = arr(i) \ 2
arr(i) = arr(i) Mod 2
i += 1
If c 1 Then
Exit Do
End If
Loop
Return arr
End Function
End Module
注意只能對整型執行按位運算。浮點值必須轉換為整型后,才能執行按位運算。按位運算采用二進制(以 2 為基)形式計算兩個整數數旅碼值。它們比較對應位置上的位,然后基于比較的結果賦值。下面的示例演示了 And 運算符。復制Dim x As Integerx = 3 And 5 前面的示例將 x 的值設置為 1。發生這種情況的原因如下:這些值以二進制形式處理:二進制格式的 3 為 011二進制格式的 5 為 101And 運算符比較這些二進制表示方式,一次比較一個二進制位置(位)。如果給定位置的兩個位都為 1,則將 1 放在結果中的該位置。如果任何薯哪一個位是 0,則將 0 放在結果中的該位置。在前面的示例中,按如下所示計算結果:011(二進制格式的 3)101(二進制格式的 5)001(二進制格式的計算結果)計算結果以十進制形式鎮緩處理。值 001 是 1 的二進制表示形式,因此 x = 1。除了在任何一個比較位是 1 或兩個比較位都是 1 的情況下將 1 賦予結果位以外,按位 Or 運算與此類似。Xor 在比較的位正好只有一個是 1(而不是兩者都是 1)時將 1 賦給結果位。Not 采用單個操作數并反轉所有位(包括符號位),然后將該值賦予結果。這意味著,對于有符號正數,Not 始終返回負值,而對于負數,Not 始終返回正值或零。AndAlso 和OrElse 運算符不支持按位運算。 追問: 好復雜啊...還是不會,還有整數怎么轉換為二進制數? 回答: 為什么一定要用位運算呢,你那個乘法只能通過左移操作符“
用bitarray類和BitVector32類實現
VB實現大致如下:
Imports?System.Collections.Specialized
...
Dim?bvData?as?BitVector32
Dim?sec1?As?BitVector32.Section?=?BitVector32.CreateSection(255)
Dim?sec2?As?BitVector32.Section?=?BitVector32.CreateSection(255,sec1)
Dim?sec3?As?BitVector32.Section?源瞎乎=?BitVector32.CreateSection(255,sec2)
Dim?sec4?As?BitVector32.Section?=?BitVector32.CreateSection(255,sec3)
Dim?Buf(4096)?as?Byte?'receive?byte?size?matched?雹悉with?DSP?send?data:?1024*4Byte
Dim?recCount?as?Integer
Dim?Data(1024)?as?long
....
For?recCount?=?0?To?1023
bvData(sec4)?=?buf(recByte*4)
bvData(sec3)?=?buf(recByte*4+1)
bvData(sec2)?=?buf(recByte*4+2)
bvData(sec1)?=?buf(recByte*4+3)
Data(recCount)?神猛=?bvData.Data?'這樣數據肯定是-398
Next
....
'自定義一個函數:功能是給小數哪鍵直接進一位
'num 要操作的小數
'n 保留幾位小數,皮悔
Function getNumber(num As Double, n As Integer) As Double
Dim a As Double
a = Int(num * (10 ^ n)) / (10 ^ n)
If a = num Then
getNumber = a
Else
getNumber = a + 1 / (10 ^ n)
End If
End Function
-------------------------
調用燃緩正一下:
Private Sub Command1_Click()
MsgBox (getNumber(3.1415926, 2))
End Sub
得到3.15
網站欄目:vb點虐
進位 vbnet goto
瀏覽地址:http://vcdvsql.cn/article18/ddpcigp.html
成都網站建設公司_創新互聯,為您提供電子商務、品牌網站制作、營銷型網站建設、、云服務器、企業網站制作
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯