在二進制和十進制的處理中,有時候一些小技巧是很有用的。
1、把十進制數(shù)轉(zhuǎn)換成二進制數(shù)
(1)在MATLAB中有一個函數(shù)dec2bin,可以把正整數(shù)轉(zhuǎn)換為2進制
(2)對于負數(shù)有這樣一個結(jié)論:N位二進制負數(shù)X的補碼對應(yīng)的無符號數(shù)為2N+X
例:有符號原碼:1001 十進制為:-1
反碼:1110
補碼:1111 無符號數(shù)為:15
15 = 24 + (-1);
這樣就可以快速的知道用4位二進制表示的-5的補碼的無符號數(shù)為16-5=11即1011
2、把負數(shù)二進制補碼轉(zhuǎn)換成十進制
(1)把符號位去掉,再把剩余位取反加一,得到的數(shù)就是負數(shù)的二進制補碼的絕對值。
(2)直接把二進制補碼取反加一;
(3)1011 (-1)*23+0*22+1*21+1*20= -5
問題:
=============================================
=============================================
1、用補碼表示的二進制,正數(shù)轉(zhuǎn)負數(shù),負數(shù)轉(zhuǎn)正數(shù)都是取反加一。
2、兩個數(shù)相加位寬會增加,所以要擴展符號位:
regdin_cho1_i[15:0];regdin_cho2_i[15:0];regdin_cho1_o2_i[16:0];always@(posedgeclk)begindin_cho1_o2_i<=?{din_cho1_i?[15],din_cho1_i?}?+?{din_cho2_i[15],din_cho2_i?};?end
3、截位處理,可以截高位,但一定要保留符號位
always@(posedge clk)begindout_i <= {din_cho1_o2_i [16],din_cho1_o2_i [14:0]};end
4、四舍五入
dout_i <= din_cho1_o2_i [16:1] + din_cho1_o2_i [0];
沒有四舍五入,可能會帶來很多直流信號。
-
二進制
+關(guān)注
關(guān)注
2文章
803瀏覽量
42057
發(fā)布評論請先 登錄
相關(guān)推薦
二進制相對調(diào)相(二進制差分調(diào)相2DPSK)的工作原理

二進制

二進制編碼和二進制數(shù)據(jù)
什么是二進制計數(shù)器,二進制計數(shù)器原理是什么?
二進制電平,什么是二進制電平
十進制數(shù)的二進制編碼
浮點數(shù)轉(zhuǎn)換為二進制存儲

二進制數(shù)據(jù)及取值范圍的計算方法

評論