1樓:匿名使用者
你別都一律取反加1啊.首先,要說清楚待轉換的數是多少有效位,然後看最高位是不是1,才決定是否需要取反加1就拿400h來說吧,如果是11位有效位,400h=100 0000 0000,那麼才取反加1得出-1024d,假如規定是12位甚至更多的位,那麼400h=0100 0000 0000,最高位是0,直接得出+1024d不信你用c語言試試,short data=0x400; printf("%d", data);看看是-1024還是+1024.你對數值編碼理解太......
2樓:匿名使用者
判斷符號位!貌似是按照1的個數的!我也忘得差不多 了!!額!!
3樓:x_d鈣
88h1.首先把88h轉換成二進位制,轉換規則為十六進製制的每一位轉換成二進位制的四位,比如十六進製制的8轉換成二進位制的1000.這是因為2^4=16,因此十六進製制的每一位對應二進位制的四位.
88=>10001000
2.第二步,二進位制的負數是以補碼的形式儲存在計算機裡的.因為是有符號數,最高位為1,所以剛才轉換的b=10001000是負數,並且是原數的補碼,設原數為a,那麼10001000就是a除符號位之後各位取反(反碼)並加1的結果.
從b出發求a,只需要將上述過程逆過來就行,即b減去1得出a的反碼(10000111).除符號位後各位取反=>a=11111000
3.接下來的工作就是將a轉換成十進位制啦,(11111000)h=-(2^3+2^4+2^5+2^6)=(-120)d
十六進製制數怎樣轉換成帶符號十進位制數的問題?
4樓:x_d鈣
88h1.首先把88h轉換成二進位制,轉換規則為十六進製制的每一位轉換成二進位制的四位,比如十六進製制的8轉換成二進位制的1000.這是因為2^4=16,因此十六進製制的每一位對應二進位制的四位.
88=>10001000
2.第二步,二進位制的負數是以補碼的形式儲存在計算機裡的.因為是有符號數,最高位為1,所以剛才轉換的b=10001000是負數,並且是原數的補碼,設原數為a,那麼10001000就是a除符號位之後各位取反(反碼)並加1的結果.
從b出發求a,只需要將上述過程逆過來就行,即b減去1得出a的反碼(10000111).除符號位後各位取反=>a=11111000
3.接下來的工作就是將a轉換成十進位制啦,(11111000)h=-(2^3+2^4+2^5+2^6)=(-120)d
在matlab中,怎麼把有符號16進製制數轉化為十進位制數。
5樓:南瓜蘋果
**功能實現將有符號的十六進製制資料轉換為有符號的十進位制資料並儲存到txt檔案:
clear all
clc%% 讀入十六進製制資料
fid = fopen('c:\users\administrator\desktop\test\data_hex.txt', 'r+');
if fid == -1
disp('fopen failed');
else
readdata = textscan(fid,'%s');
endfclose(fid);
%% 從元胞陣列中讀出16進製制數,並轉換為無符號資料
for i=1:length(readdata)
data(i) = hex2dec(readdata);
end%% 根據資料位寬,將無符號的資料轉換為有符號資料(無符號資料不需要此操作)
for i=1:length(data)
if(data(i) > 2^8/2-1)%8位寬的資料有符號資料取值範圍[-128,127],(2^8/2-1=127),根據實際位寬修改
data_dec(i) = data(i) - 2^8;
else
data_dec(i) = data(i);
endend
擴充套件資料
matlab讀取十六進製制數
通過串列埠向上位機傳送的資料往往是16進製制數,但是我們直觀的比較資料則是用10進製的形式,這就需要將16進製制數轉化成10進製數。
通過串列埠除錯助手將採集的資料儲存成txt文件後第乙個問題就是matlab如何讀取txt檔案的值,matlab有個函式textread 就可以實現,當然用fopen也可以,但textread 比較簡單。textread的使用可以參考help文件。將16進製制轉化成10進製用到了matlab的另外乙個函式hex2dec(a)。
讀取二進位制txt檔案:
假如txt文件中內容為0001 0010 0011 0100 1000,儲存在pin.txt文件中
使用a=textread('pin.txt','%s')'
a = '0001' '0010' '0011' '0100' '1000'
可以看到資料儲存為了char格式。
6樓:有空飄過的
寫個簡單的函式即可
function decval=hex2decwithsign(hexval, length)
decval = hex2dec(hexval);
sign = bitget(decval, 4*length);
negative_numbers = (sign == 1);
decval(negative_numbers) = decval(negative_numbers) - bitshift(1, 4*length);
用法:>> hex2decwithsign(, 4)ans =-10
>> hex2decwithsign('ffff', 5)ans =
65535
十六進製制數如何轉換成十進位制?
7樓:丿染指流年丶丶
16進製制數的第0位的權值為16的0次方,第1位的權值為16的1次方,第2位的權值為16的2次方…
所以,在第n(n從0開始)位上,如果是是數 x (x 大於等於0,並且x小於等於 15,即:f)表示的大小為 x * 16的n次方。
進製轉換表:
例:2af5換算成10進製:
用豎式計算:
第0位: 5 * 16^0 = 5
第1位: f * 16^1 = 240
第2位: a * 16^2= 2560
第3位: 2 * 16^3 = 8192
-------------------------------------
10997
直接計算就是:
5 * 16^0 + f * 16^1 + a * 16^2 + 2 * 16^3 = 10997
擴充套件資料:
十六轉十的乘法口訣:
一峘一拾六
二峘三拾二
三峘四拾八
四峘六拾四
五峘八拾
六峘九拾六
七峘一百一拾二
八峘一百二拾八
九峘一百四十四
十峘一百六
屲峘一百七拾六
亗峘一百九拾二
岌峘二百零八
岄峘二百二拾四
岪峘二百四
8樓:枕邊吹風會
16進製制就是逢16進1,但我們只有0~9這十個數字,所以我們用a,b,c,d,e,f這六個字母來分別表示10,11,12,13,14,15。字母不區分大小寫。
十六進製制數的第0位的權值為16的0次方,第1位的權值為16的1次方,第2位的權值為16的2次方……
所以,在第n(n從0開始)位上,如果是是數 x (x 大於等於0,並且x小於等於 15,即:f)表示的大小為 x * 16的n次方。
例如十六進數 2af5, 轉化成10進製的步驟:
用豎式計算:
2af5換算成10進製:
第0位:
第1位:
第3位:
直接計算就是:
可以看出,所有進製換算成10進製,關鍵在於各自的權值不同。
擴充套件資料:
進製轉換是人們利用符號來計數的方法。進製轉換由一組數碼符號和兩個基本因素「基數」與「位權」構成。基數是指,進製計數制中所採用的數碼(數制中用來表示「量」的符號)的個數。
位權是指,進製中每一固定位置對應的單位值。
十進位制中的數字排列是這樣的:
…… 萬 千 百 十 個 十分 百分 千分……
16進製制中的數字排列是這樣的:
9樓:
4個2進製位為乙個16進製制數,2進製1111為16進製制f,2進製中千位的1=8,百位的1=4,十位的1=2,個位的1=1,將各個位的數作相應轉換再相加,的到的數就是10進製數0-15,可輕鬆轉換成16進製制。如01011100,可看成是兩組2進製數0101和1100,則這個數就是16進製制的5c。
10轉16:
100以內一點的10轉16心算比較快,複雜的用「計算器」算了。10轉16用傳統的計算方式可以了,就是大於15小於256的10進製數除以16為的值為十位的16進製制數,其餘數為個位的16進製制數,沒餘數則個位為0。如61的16進製制是3d,61除以16得3餘13,3作十位數,13轉成d為各位數。
16轉10:
用相反的道理,將十位數乘以16加上個位數。如5a,將5乘以16得80,加上a的10進製10,結果是90。
10樓:banji的老巢
十六進製制數轉換十進位制數,也是利用權值和開方所得,具體內容給你舉例說明:
例:十六進製制數2a4f,轉換為十進位制數為:f*16^0+4*16^1+a*16^2+2*16^3=15+64+2560+8192=10831。
十六進製制(hexadecimal)是計算機中資料的一種表示方法。同我們日常中的十進位制表示法不一樣。
十六進製制數的基數是16,採用的數碼是0、1、2、3、4、5、6、7、8、9、a、b、c、d、e、f。其中a-f分別表示十進位制數字10-15。十六進製制數的技術規則是"逢十六進一",它的各位的權是以16的n次方標識的。
通常,對十六進製制數的表示,可以在數字的右下角標註16或h,但在c語言中是在數的前面加數字0和字母x即0x來表示。例如,12af在c語言中表示為0x12af。
十六進製制數的加減法的進/借位規則為:借一當十六,逢十六進一。 十六進製制數同二進位制數及十進位制數一樣,也可以寫成式的形式。
11樓:匿名使用者
■■■■■樓上的刷屏刷的太厲害了吧..■■■■■十六進製制數轉換成十進位制十分簡單
舉個例子:ac(十六進製制)轉換成十進位制為
a所在位置為16的1次方再乘以a也就是十進位制數的10=16*10=160
c所在位置為16的0次方再乘以c也就是十進位制數的12=1*12=12現在再把那個數再起來就是172了
如果還要往更高位算的話那就是16的三次方嘍..只要你明白了這樣的演算法就搞定了
十進位制轉換成十六進製制數是,將十進位制數200轉換成十六進製制,結果為
手算過程 先寫十六進製制各位基數 從1開始寫,右邊寫個小數點,先向左邊逐位寫,每位是右邊位陣列乘以16,寫到比25大為止 256 16 1.然後向左邊寫,每項是左邊項除以16,寫一兩項即可 256 16 1.1 16 1 256 0 1 9.5 0 下面先轉換整數部分25 從左到右逐項計算直到1,第...
將十進位制數3256轉換成十六進製制
1 十進位制數3256轉換為十六進製制數是cb8 16 十進位制整數轉十六進製制數 除以16取餘,逆序排列 除十六取餘法 十六進製制 英文名稱 hexadecimal 是計算機中資料的一種表示方法。同我們日常生活中的表示法不一樣。它由0 9,a f組成,字母不區分大小寫。與10進製的對應關係是 0 ...
145 875十進位制轉換成十六進製制數 詳細步驟
教你乙個最簡單的方法吧 小數點錢的整數部分 如145 直接跟16相除,一直除到餘數小於16即可。這裡145 16 9 餘數為1 對於小數點後面的數,只用相反的方法即可 一直乘以16,直到沒有小數為止,當然了,乘出的整數結果必須要在16以內哦。這裡用 根據16進製制的規則 123456789abcde...
十六進製制3C7F轉換成十進位制,十六進製制數2A3C轉換成十進位制數是
類似十進位制,123.45 1 10 2 2 10 1 3 10 0 4 10 1 5 10 2,同樣的,十六進製制還算算成十進位制就是 3 16 3 c 16 2 7 16 1 f 10 0 15487其中,c代表十進位制的12,f代表15.3 oo11 c 1100因為在9以後都要以a,b,c來...
十六進製制與十進位制怎麼換算,十六進製制轉換成十進位制的具體演算法?
0 9對應0 9 a f對應10 15 h就是表示16進製制的意思例如 2dch 2 16 13 16 12 16 512 208 12 732 d也就是說十六進製制轉換為十進位制等於732,乙個十六進製制數abcde,按權得到abcde a 16 4 b 16 3 c 16 2 d 16 1 e ...