A. 反碼、補碼、原碼、反補碼是什麼意思
正數的原碼、反碼、補碼相同;
負數的原碼取反就是反碼(最高位1不能變),反碼+1就是補碼;
負數的補碼取反就是反碼(最高位1不能變),反碼+1就是原碼;
因為最高bit不是1,所以這里Y一定是正整數。
如果X是無符號數:
X和Y的補碼就是源碼,直接相減的到結果是整數,也是補碼,
X-Y=10100001
如果X是有符號數:
X的原碼是100010101,即-21,Y的原碼是01001010,即74,X-Y為-95,得到的原碼11011111,對應的補碼是10100001
B. 二進制的原碼、補碼、反碼詳解
計算機中,並沒有原碼和反碼,只是使用補碼,代表正負數。
使用補碼的意義:可以把減法或負數,轉換為加法運算。從而簡化計算機的硬體。
------------
比如鍾表,時針轉一圈,周期是 12 小時。
倒撥 3 小時,可以用正撥 9 小時代替。
9,就稱為-3 的補數。
計算方法:12-3 = 9。
對於分針,倒撥 X 分,就可以用正撥 60-X 代替。
------------
如果,限定了兩位十進制數 (0~99),周期就是 100。
那麼,減一,就可以用 +99 代替。
24-1 = 23
24 + 99 = (1) 23
忽略進位,只取兩位數,這兩種演算法,結果就是相同的。
於是,99 就是 -1 的補數。
其它負數的補數,大家可以自己求!
求出了負數的補數,就可用加法,代替減法了。
------------
計算機中使用二進制,補數,就改稱為【補碼】。
常用的八位二進制是:0000 0000~1111 1111。
它們代表了十進制:0~255,周期就是 256。
那麼,-1,就可以用 255 = 1111 1111 代替。
所以:-1 的補碼,就是 1111 1111 = 255。
同理:-2 的補碼,就是 1111 1110 = 254。
繼續:-3 的補碼,就是 1111 1101 = 253。
。。。
最後:-128,補碼是 1000 0000 = 128。
計算公式:負數的補碼=256+這個負數。
正數,直接運算即可,不需要求補碼。
也可以說,正數本身就是補碼。
------------
補碼的應用如: 7-3 = 4。
用補碼的計算過程如下:
7 的補碼=0000 0111
-3的補碼=1111 1101
--相加-------------
得:(1) 0000 0100 = 4 的補碼
舍棄進位,只保留八位,作為結果即可。
這就是:使用補碼,加法就代替了減法。
所以,在計算機中,有一個加法器,就夠用了。
原碼和反碼,都沒有這種功能。
------------
原碼和反碼,毫無用處。計算機中,根本就沒有它們。
C. 朋友你的MACD和KDJ 合為一個指標正是我需要的可以提供源碼嗎 謝謝
這個就可用了,簡單就好,不要搞得太復雜。需要設置可變參數,可修改KDJ的9-3-3為M,N1,N2.MACD的參數也同樣可改。
{KDJ_MACD}
RSV:=(CLOSE-LLV(LOW,9))/(HHV(HIGH,9)-LLV(LOW,9))*100;
K:SMA(RSV,3,1),NODRAW;
D:SMA(K,3,1),NODRAW;
J:3*K-2*D,NODRAW;
DIF:EMA(CLOSE,12)-EMA(CLOSE,26),COLORWHITE;
DEA:EMA(DIF,9),COLORYELLOW;
MACD:(DIF-DEA)*2,COLORSTICK;
DRAWBAND(K/25,RGB(255,0,0),K/25,RGB(0,0,0));
DRAWBAND(D/25,RGB(0,255,0),D/25,RGB(0,0,0));
DRAWBAND(J/25,RGB(0,0,255),J/25,RGB(0,0,0));
D. VB編寫的區域網聊天工具源代碼
用VB做聊天程序的方法
---- 所謂"聊天"是指兩個程序能夠發送數據給對方。這個程序涉及到數據通訊的知識,彷彿很復雜,不過,由於VB給我們提供了一個Winsock控制項,問題就變得很簡單了。
---- 先編寫"聊天(主機)"程序。在窗體里添加Winsock控制項,並設置其Protocol屬性為1-SckUDPProtocol,其他屬性為預設值。接著添加兩個標簽和兩個文本框,設置兩個標簽的標題屬性分別為"接收窗"和"發送窗";兩個文本框的標題屬性為空。最後編寫代碼:
---- 1."聊天(主機)"
Private Sub Form-Load()
′設置網路地址
Winsock1.LocalPort=1024
Winsock1.RemoteHost="202.96.6.1"
Winsock1.RemotePort=1999
End Sub
Private Sub Text1-Change()
′發送用戶輸入的內容
Winsock1.SendData Text1.Text
End Sub
Private Sub Winsock1-DataArrival
(Byval bytesTotal As Long)
Dim rec As String
′接收對方數據並在文本框內顯示
Winsock1.GetData rec, vb String
Text2.Text=rec
End Sub
---- 2."聊天(副機)"
Private Sub Form_Load()
′設置網路地址
Winsock1.LocalPort=1999
Winsock1.RemoteHost="202.96.6.1"
Winsock1.RemotePort=1024
---- 其他部分程序與(主機)相同。最後將兩個程序存檔,並編譯成執行(.Exe)文件。現在就可以使用這個程序進行對話了。
---- 七.文本框中文本的某一特定字元或字元串同時高亮顯示的方法
---- 由於普通TextBox控制項不支持不連續字元串的同時高亮顯示,所以我們選擇RichTextBox控制項。單擊工程(Project)選單項,在彈出的下拉選單中單擊組件(Components)選單項,從彈出的對話框中選擇Microsoft Rich Textbox Control 5.0復選框,確定載入RichTextBox控制項。
---- 新建(New)一個工程,在窗體(Form)上添加一個RichTextBox控制項和兩個Command(按鈕)控制項,都採用系統默認的Name屬性值;設置RichTextBox的Text屬性值為空,Command1和Command2的Caption屬性值分別設為"輸入文本"和"選擇字元串"。最後,添加如下VB代碼:
Private Sub Command1-Click()
Dim str As String
Dim Text As String
str=〃輸入文本〃
Text=InputBox(str)
RichTextBox1.Text=Text
End Sub
Private Sub Command2-Click()
Dim str As String
Dim Text As String
Dim Position As Integer
Dim Lenth As Integer
str=〃輸入要高亮顯示的字元串〃
Text=InputBox(str)
If Text 〈〉 〃〃 Then
Position=InStr(RichTextBox1.Text, Text)-1
Lenth=Len(Text)
RichTextBox1.SelStart=Position
RichTextBox1.SelLength=Lenth
RichTextBox1.SelColor=RGB(255,0,0)
Do While InStr(Position+Lenth+
1, RichTextBox1.Text, Text) 〈〉 0
Position=InStr(Position+Lenth+
1, RichTextBox1.Text, Text)-1
RichTextBox1.SelStart=Position
RichTextBox1.SelLength=Lenth
RichTextBox1.SelColor=RGB(255,0,0)
Loop
End If
End Sub
---- 按F5執行程序,單擊"輸入文本"按鈕,在彈出的對話框中輸入一些文本,確定後,剛剛輸入的文本將顯示在RichTextBox中;再單擊"選擇字元串"按鈕,在彈出的對話框中輸入你希望高亮顯示的字元串,確定後,RichTextBox中相應的字元串將以紅色高亮顯示。
---- 八.編程實現Windows 95/98操作系統熱啟動的方法
---- 要利用程序實現系統的重新啟動,可以在你的程序中調用API函數來實現。建一個子函數:(以VB為例)
Declare Function SystemParametersInfo Lib 〃
user32〃 Alias -
〃SystemParametersInfo〃 (ByVal uAction As Long,
ByVal uParam As Long,
ByVal lpvParam As Any, ByVal
fuWinIni As Long) As Long
Sub DisableCtrlAltDelete(bDisabled As Boolean)
Dim X As Long
X=SystemParametersInfo(97, bDisabled, CStr(1), 0)
End Sub
Call DisableCtrlAltDelete(true) ′禁止熱啟
Call DisableCtrlAltDelete(false) ′允許熱啟
---- 九.在Windows 95/ 98啟動後自動啟動程序的方法
---- 我們都知道在Windows 95/98的"開始"→"程序"選單下有一"啟動"選單項,當每次啟動Windows 95或Windows 98時,系統都會自動啟動放在"啟動"選單欄里的可執行程序。
---- 但目前有好多軟體,像解霸五、ICQ,以及大部分實時偵測病毒的軟體等等,安裝後,並沒有放在"啟動"選單里,也能在啟動操作系統時自動啟動。怎麼實現的呢?
---- 其實只要知道Windows注冊表的一些知識,這個問題就不能稱之為問題了。用滑鼠單擊"開始",打開開始選單,再單擊"運行",出現一對話框,然後輸入"regedit",確定後,會打開系統注冊表編輯器,找到HKEY-LOCAL-MACHINE? SOFTWARE?Microsoft?Windows?CurrentVersion?Run,加入你的程序的入口,就可以了。如果不知道怎麼加,就參考一下已經存在的鍵值。
---- 十. 如何把數據文件輸出到Text控制項中?如果數據量比較大,窗體滿屏也不夠大,怎麼解決?
---- 有一個比較簡單的方法,就是把數據放到一個文本框(Text)里,並在其中加上水平和垂直滾動條。具體實現步驟為:先在窗體(Form)里加入一個文本框,採用默認名Text1;然後,設置文本框Text1的屬性:Text屬性設置為空,MultiLine屬性設置為True,ScrollBars屬性設置為3-Both;接著添加如下VB代碼:
Private Sub Form-Load()
Dim Handle As Integer
Dim FileName As String
On Error GoTo ErrExit
begin:
′輸入要顯示的數據文件的名稱
FileName=InputBox$(〃Input Filename〃,
〃Open File〃)
On Error GoTo FileErr
Handle=FreeFile
Open FileName For Input As #Handle
′把數據文件中的數據輸出到文本框中
Text1.Text=Input$(LOF(Handle), Handle)
Close #Handle
Exit Sub
FileErr:
Dim ErrNum As Integer
If Err.Number=53 Then
ErrNum=MsgBox(〃File not exist〃,
vbOKCancel, 〃Error Information〃)
If ErrNum=1 Then
GoTo begin
Else
Exit Sub
End If
End If
MsgBox Err.Description, , 〃file open failed〃
ErrExit:
Exit Sub
End Sub
′使文本框充滿整個窗體
Private Sub Form-Resize()
Text1.Left=0
Text1.Top=0
Text1.Width=Form1.Width-100
Text1.Height=Form1.Height-400
End Sub
---- 通過這樣的處理,不僅能解決問題,而且用戶還可以在文本框中對數據進行編輯。
---- 十一.關聯文件列表框、目錄列表框和驅動器列表框的方法
---- 想做一個對話窗體,包含驅動器列表框、目錄列表框和文件列表框,並能實現三者的同步操作,怎麼做?這都是我們在實際應用中經常會遇到的問題,在VB中解決這個問題非常簡單,可以通過Path屬性的改變引發Change事件來實現。例如:
Sub Dir1-Change()
File1.Path=Dir1.Path
End Sub
---- 該事件過程使窗體上的目錄列表框Dir1和文件列表框File1產生同步。因為目錄列表框Path屬性的改變將產生Change事件,所以在Dir1-Change事件過程中,把Dir1.Path賦給File1.Path,就可以產生同步效果。類似地,增加下面的事件過程,就可以使三種列表框同步操作:
Sub Drive1-Change()
Dir1.Path=Drive1.Drive
End Sub
---- 該過程使驅動器列表框和目錄列表框同步,前面的過程使目錄列表框和文件列表框同步,從而使三種列表框同步,問題即可解決。