c语言占八个字节的浮点数是,『double转八字节十六进制』double占8字节 一个数字占1字节 为什么能精确16位 我觉得只有8位,,,...
C# 的double類型的10進(jìn)制 轉(zhuǎn)化成 字符串的 2進(jìn)制和16進(jìn)制的問題
先轉(zhuǎn)換成字組,然后再轉(zhuǎn)成2進(jìn)制和16進(jìn)制格字符串XSf道家風(fēng)水傳承網(wǎng)double?x?=?3.14d;XSf道家風(fēng)水傳承網(wǎng)
XSf道家風(fēng)水傳承網(wǎng)
//?先轉(zhuǎn)換為字節(jié)數(shù)組XSf道家風(fēng)水傳承網(wǎng)
byte[]?bArray?=?BitConverter.GetBytes(x);XSf道家風(fēng)水傳承網(wǎng)
XSf道家風(fēng)水傳承網(wǎng)
//?再轉(zhuǎn)換為制和十六進(jìn)制字符串XSf道家風(fēng)水傳承網(wǎng)
string?sBin?=?string.Empty;XSf道家風(fēng)水傳承網(wǎng)
string?sHex?=?string.Empty;XSf道家風(fēng)水傳承網(wǎng)
foreach(byte?b?in?bArray)XSf道家風(fēng)水傳承網(wǎng)
{XSf道家風(fēng)水傳承網(wǎng)
sBin? =?Convert.ToString(b,?2);XSf道家風(fēng)水傳承網(wǎng)
sHex? =?Convert.ToString(b,?16);XSf道家風(fēng)水傳承網(wǎng)
}
計(jì)算機(jī)二進(jìn)制,十進(jìn)制,八進(jìn)制,十六進(jìn)制怎么轉(zhuǎn)換
1.什么進(jìn)制XSf道家風(fēng)水傳承網(wǎng)
二進(jìn)制是計(jì)算技術(shù)中廣泛采用的數(shù)制。二進(jìn)制數(shù)據(jù)是用0和1兩個(gè)數(shù)的數(shù)。它的基數(shù)為2,進(jìn)位規(guī)則是“逢二進(jìn)一”,借位規(guī)則是“借一當(dāng)二”,由18世紀(jì)德國數(shù)理哲學(xué)大師萊布尼茲發(fā)現(xiàn)。當(dāng)前的計(jì)算機(jī)系統(tǒng)使用的基本上是二進(jìn)制系統(tǒng),數(shù)據(jù)在計(jì)算機(jī)中主要是以補(bǔ)碼的形式存儲(chǔ)的。計(jì)算機(jī)中的二進(jìn)制則是一個(gè)非常微小的開關(guān),用“開”來表示1,“關(guān)”來表示0。 ? ? ??XSf道家風(fēng)水傳承網(wǎng)
.信息的存儲(chǔ)單位XSf道家風(fēng)水傳承網(wǎng)
位(Bit)?:度量數(shù)據(jù)的最小單位XSf道家風(fēng)水傳承網(wǎng)
字節(jié)(Byte):最常用的基本單位,一個(gè)字節(jié)有8位XSf道家風(fēng)水傳承網(wǎng)
b7??b6?b5?b4?b3?b2?b1?b0XSf道家風(fēng)水傳承網(wǎng)
1 ? ?0 ? 0 ?1 ? 0 ? 1 ? 0 ? 1 ?=27 24 22 20=149XSf道家風(fēng)水傳承網(wǎng)
K字節(jié) ? ? ? 1k=1024 byteXSf道家風(fēng)水傳承網(wǎng)
M(兆)字節(jié) ?1M=1024KXSf道家風(fēng)水傳承網(wǎng)
G(吉)字節(jié) ?1G=1024MXSf道家風(fēng)水傳承網(wǎng)
T(太)字節(jié) ?1T=1024GXSf道家風(fēng)水傳承網(wǎng)
2.十進(jìn)制轉(zhuǎn)換XSf道家風(fēng)水傳承網(wǎng)
1234[10進(jìn)制]?0 1 2 3 4 5 6 7 8 9 0?當(dāng)數(shù)位上的值超過9就要進(jìn)1XSf道家風(fēng)水傳承網(wǎng)
1000 200 30 4=1*103 2*102 3*101 4*100=1234XSf道家風(fēng)水傳承網(wǎng)
1011[2進(jìn)制]?0 1?當(dāng)數(shù)位上的值超過1就要進(jìn)1XSf道家風(fēng)水傳承網(wǎng)
1*23 0*22 1*21 1*20=8 0 2 1=11XSf道家風(fēng)水傳承網(wǎng)
1011[8進(jìn)制]0 1 2 3 4 5 6 7?當(dāng)數(shù)位上的值超過7就要進(jìn)1XSf道家風(fēng)水傳承網(wǎng)
1*83 1*81 1*80=512 8 1=521XSf道家風(fēng)水傳承網(wǎng)
1011[16進(jìn)制]0 1 2 3 4 5 6 7 8 9 A B C D E F?當(dāng)數(shù)位上的值超過15就要進(jìn)1XSf道家風(fēng)水傳承網(wǎng)
1*163 1*161 1*160=4096 16 1=4113XSf道家風(fēng)水傳承網(wǎng)
3.二進(jìn)制轉(zhuǎn)換XSf道家風(fēng)水傳承網(wǎng)
首先來看十進(jìn)制到二進(jìn)制:除2取余數(shù) 最后把余數(shù)倒過來?100101XSf道家風(fēng)水傳承網(wǎng)
比如:十進(jìn)制數(shù)37XSf道家風(fēng)水傳承網(wǎng)
所以轉(zhuǎn)換成的二進(jìn)制數(shù)字為:100101XSf道家風(fēng)水傳承網(wǎng)
再來八進(jìn)制到二進(jìn)制:一個(gè)八進(jìn)制的位拆分成一個(gè)三位的二進(jìn)制數(shù)XSf道家風(fēng)水傳承網(wǎng)
比如:[八進(jìn)制]616XSf道家風(fēng)水傳承網(wǎng)
6拆分成?110XSf道家風(fēng)水傳承網(wǎng)
1拆分成 001XSf道家風(fēng)水傳承網(wǎng)
6拆分成 110XSf道家風(fēng)水傳承網(wǎng)
所以轉(zhuǎn)換成的二進(jìn)制數(shù)字為:110001110XSf道家風(fēng)水傳承網(wǎng)
再來十六進(jìn)制到二進(jìn)制:一個(gè)八進(jìn)制的位拆分成一個(gè)四位的二進(jìn)制數(shù)XSf道家風(fēng)水傳承網(wǎng)
比如:[十六進(jìn)制]616XSf道家風(fēng)水傳承網(wǎng)
6拆分成 0110XSf道家風(fēng)水傳承網(wǎng)
1拆分成 0001XSf道家風(fēng)水傳承網(wǎng)
6拆分成 0110XSf道家風(fēng)水傳承網(wǎng)
所以轉(zhuǎn)換成的二進(jìn)制數(shù)字為:11000010110XSf道家風(fēng)水傳承網(wǎng)
4.八進(jìn)制轉(zhuǎn)換XSf道家風(fēng)水傳承網(wǎng)
十進(jìn)制到八進(jìn)制:除8取余數(shù) 最后把余數(shù)倒過來XSf道家風(fēng)水傳承網(wǎng)
同時(shí)我們也可以先將十進(jìn)制轉(zhuǎn)換成二進(jìn)制,然后將二進(jìn)制又轉(zhuǎn)換成八進(jìn)制?XSf道家風(fēng)水傳承網(wǎng)
比如:2456 轉(zhuǎn)化成八進(jìn)制數(shù)字:4630XSf道家風(fēng)水傳承網(wǎng)
2456/8=307,余0;XSf道家風(fēng)水傳承網(wǎng)
307/8=38,余3;XSf道家風(fēng)水傳承網(wǎng)
38/8=4,余6;XSf道家風(fēng)水傳承網(wǎng)
4/8=0,余4。XSf道家風(fēng)水傳承網(wǎng)
將所有余數(shù)倒序相連,得到結(jié)果:4630。XSf道家風(fēng)水傳承網(wǎng)
因此十進(jìn)制的2456轉(zhuǎn)換為八進(jìn)制結(jié)果為4630。XSf道家風(fēng)水傳承網(wǎng)
二進(jìn)制到八進(jìn)制轉(zhuǎn)換 ?7=4 2 1 111 八進(jìn)制最大的數(shù)字是7轉(zhuǎn)換成二進(jìn)制剛好是111,占3個(gè)位XSf道家風(fēng)水傳承網(wǎng)
每三個(gè)二進(jìn)制數(shù)為一組,轉(zhuǎn)成一個(gè)八進(jìn)制數(shù)位,如果二進(jìn)制高位不足3位時(shí),用零填補(bǔ)。XSf道家風(fēng)水傳承網(wǎng)
比如:10011011XSf道家風(fēng)水傳承網(wǎng)
010 011 011XSf道家風(fēng)水傳承網(wǎng)
2 ? ? 3 ? ? 3XSf道家風(fēng)水傳承網(wǎng)
因此二進(jìn)制的10011011轉(zhuǎn)換為八進(jìn)制結(jié)果為233。XSf道家風(fēng)水傳承網(wǎng)
5. 十六進(jìn)制到八進(jìn)制XSf道家風(fēng)水傳承網(wǎng)
我們可以先把十六進(jìn)制的數(shù)字轉(zhuǎn)換成二進(jìn)制,在從二進(jìn)制轉(zhuǎn)換成八進(jìn)制例如:?XSf道家風(fēng)水傳承網(wǎng)
3BC24?XSf道家風(fēng)水傳承網(wǎng)
分別對(duì)應(yīng)到二進(jìn)制就是:?XSf道家風(fēng)水傳承網(wǎng)
3 0011?XSf道家風(fēng)水傳承網(wǎng)
B 1011?XSf道家風(fēng)水傳承網(wǎng)
C 1100?XSf道家風(fēng)水傳承網(wǎng)
4 0100XSf道家風(fēng)水傳承網(wǎng)
連起來就是:?XSf道家風(fēng)水傳承網(wǎng)
0011 1011 1100 0100XSf道家風(fēng)水傳承網(wǎng)
再按照每三個(gè)一組分組:?XSf道家風(fēng)水傳承網(wǎng)
0 011 101 111 000 100XSf道家風(fēng)水傳承網(wǎng)
0__3__5__7__0__4?XSf道家風(fēng)水傳承網(wǎng)
所以8進(jìn)制就是35704XSf道家風(fēng)水傳承網(wǎng)
6.十六進(jìn)制轉(zhuǎn)換XSf道家風(fēng)水傳承網(wǎng)
十進(jìn)制到十六進(jìn)制:除16倒著取余數(shù)XSf道家風(fēng)水傳承網(wǎng)
同時(shí)我們也可以先將十進(jìn)制轉(zhuǎn)換成二進(jìn)制,然后將二進(jìn)制又轉(zhuǎn)換成十六進(jìn)制?XSf道家風(fēng)水傳承網(wǎng)
比如說:1610轉(zhuǎn)換成十六進(jìn)制XSf道家風(fēng)水傳承網(wǎng)
直接轉(zhuǎn)16進(jìn)制:XSf道家風(fēng)水傳承網(wǎng)
1610/16=100……10(A);XSf道家風(fēng)水傳承網(wǎng)
100 /16= 6……4;XSf道家風(fēng)水傳承網(wǎng)
6 /16= 0……6;XSf道家風(fēng)水傳承網(wǎng)
故:1610(10)=64A(16).XSf道家風(fēng)水傳承網(wǎng)
二進(jìn)制到十六進(jìn)制?15=8 4 2 1 ? 1111 十六進(jìn)制最大數(shù)字是F,即15轉(zhuǎn)換成二進(jìn)制1111,剛好占4個(gè)位XSf道家風(fēng)水傳承網(wǎng)
每四個(gè)二進(jìn)制數(shù)為一組,轉(zhuǎn)成一個(gè)十六進(jìn)制數(shù)位,如果二進(jìn)制高位不足3位時(shí),用零填補(bǔ)。XSf道家風(fēng)水傳承網(wǎng)
比如:1110011011XSf道家風(fēng)水傳承網(wǎng)
0011 1001 1011XSf道家風(fēng)水傳承網(wǎng)
3 ? ? ? 9 ? ? ?BXSf道家風(fēng)水傳承網(wǎng)
因此二進(jìn)制的?1110011011轉(zhuǎn)換為十六進(jìn)制39BXSf道家風(fēng)水傳承網(wǎng)
八進(jìn)制到十六進(jìn)制XSf道家風(fēng)水傳承網(wǎng)
我們可以先把八進(jìn)制的數(shù)字轉(zhuǎn)換成二進(jìn)制,在從二進(jìn)制轉(zhuǎn)換成十六進(jìn)制XSf道家風(fēng)水傳承網(wǎng)
八進(jìn)制的:1234567XSf道家風(fēng)水傳承網(wǎng)
轉(zhuǎn)換為二進(jìn)制是每個(gè)數(shù)字轉(zhuǎn)換為三位二進(jìn)制:001 010 011 100 101 110 111XSf道家風(fēng)水傳承網(wǎng)
然后把這些數(shù)字從右邊開始進(jìn)行按四位分組:0 0101 0011 1001 0111 0111XSf道家風(fēng)水傳承網(wǎng)
然后從右邊每四位組依次對(duì)應(yīng)一個(gè)16進(jìn)制數(shù):053977XSf道家風(fēng)水傳承網(wǎng)
7.各種進(jìn)制的用途XSf道家風(fēng)水傳承網(wǎng)
說了這么多,這些進(jìn)制都有些什么用了,大家一起討論下吧!!!XSf道家風(fēng)水傳承網(wǎng)
10進(jìn)制,當(dāng)然是便于我們?nèi)祟悂硎褂?#xff0c;我們從小的習(xí)慣就是使用十進(jìn)制,這個(gè)毋庸置疑。XSf道家風(fēng)水傳承網(wǎng)
2進(jìn)制,是供計(jì)算機(jī)使用的,1,0代表開和關(guān),有和無,機(jī)器只認(rèn)識(shí)2進(jìn)制。XSf道家風(fēng)水傳承網(wǎng)
16進(jìn)制,內(nèi)存地址空間是用16進(jìn)制的數(shù)據(jù)表示, 如0x8049324。XSf道家風(fēng)水傳承網(wǎng)
編程中,我們常用的還是10進(jìn)制。 XSf道家風(fēng)水傳承網(wǎng)
比如:int a = 100,b = 99; XSf道家風(fēng)水傳承網(wǎng)
不過,由于數(shù)據(jù)在計(jì)算機(jī)中的表示,最終以二進(jìn)制的形式存在,所以有時(shí)候使用二進(jìn)制,可以更直觀地解決 問題。但二進(jìn)制數(shù)太長了。比如int 類型占用4個(gè)字節(jié),32位。比如100,用int類型的二進(jìn)制數(shù)表達(dá)將是: XSf道家風(fēng)水傳承網(wǎng)
0000 0000 0000 0000 0110 0100 XSf道家風(fēng)水傳承網(wǎng)
面對(duì)這么長的數(shù)進(jìn)行思考或操作,沒有人會(huì)喜歡。因此,用16進(jìn)制或8進(jìn)制可以解決這個(gè)問題。因?yàn)?#xff0c;進(jìn)制越大,數(shù)的表達(dá)長度也就越短。XSf道家風(fēng)水傳承網(wǎng)
1.用于計(jì)算機(jī)領(lǐng)域的一種重要的數(shù)制 XSf道家風(fēng)水傳承網(wǎng)
2.對(duì)計(jì)算機(jī)理論的描述,計(jì)算機(jī)硬件電路的設(shè)計(jì)都是很有益的。比如邏輯電路設(shè)計(jì)中,既要考慮功能的完備,還要考慮用盡可能少的硬件,十六進(jìn)制就能起到一些理論分析的作用。比如四位二進(jìn)制電路,最多就是十六種狀態(tài),也就是一種十六進(jìn)制形式,只有這十六種狀態(tài)都被用上了或者盡可能多的被用上,硬件資源才發(fā)揮了盡可能大的作用。 XSf道家風(fēng)水傳承網(wǎng)
3.十六進(jìn)制更簡短,因?yàn)閾Q算的時(shí)候一位16進(jìn)制數(shù)可以頂4位2進(jìn)制數(shù)。XSf道家風(fēng)水傳承網(wǎng)
8進(jìn)制,一般有什么用,查了下資料,還真不知道?有知道的大神告訴我吧。XSf道家風(fēng)水傳承網(wǎng)
如果你用過linux你可能見過這樣表示一個(gè)文件的權(quán)限:0777、0666等等XSf道家風(fēng)水傳承網(wǎng)
可能有的這樣解釋:具有讀權(quán)限加1,具有寫權(quán)限加2,具有執(zhí)行權(quán)限加4,最后的和就是一個(gè)角色所具有的權(quán)限。而linux有三種角色:屬主、屬組、其他用戶,所以用0777、0666之類的表示。XSf道家風(fēng)水傳承網(wǎng)
如果用二進(jìn)制來看的話,linux用3個(gè)bit來表示權(quán)限,如果具有某個(gè)權(quán)限就把那位置1.比如只具有讀權(quán)限就是100,只具有寫權(quán)限就是010,具有讀寫權(quán)限就是110,具有讀寫執(zhí)行權(quán)限就是111。XSf道家風(fēng)水傳承網(wǎng)
如何將16進(jìn)制轉(zhuǎn)換為Double型
C里面有語法做類型轉(zhuǎn)換啊XSf道家風(fēng)水傳承網(wǎng)
類型名(值) 就能把 值轉(zhuǎn)換成 所需要的 類型XSf道家風(fēng)水傳承網(wǎng)
double(0x00000000000000005940) 就轉(zhuǎn)成double了
如何將double型數(shù)值轉(zhuǎn)換為16進(jìn)制的形式
public String SetNewGuid() {XSf道家風(fēng)水傳承網(wǎng)
String guid = "";XSf道家風(fēng)水傳承網(wǎng)
for (int i = 1; i <= 32; i ) {XSf道家風(fēng)水傳承網(wǎng)
int n =(int)Math.floor(Math.random() * 16.0);XSf道家風(fēng)水傳承網(wǎng)
String uid=Integer.toHexString(n) ;XSf道家風(fēng)水傳承網(wǎng)
System.out.println(uid);XSf道家風(fēng)水傳承網(wǎng)
guid = uid;XSf道家風(fēng)水傳承網(wǎng)
if ((i == 8) || (i == 12) || (i == 16) || (i == 20))XSf道家風(fēng)水傳承網(wǎng)
guid = "-";XSf道家風(fēng)水傳承網(wǎng)
}XSf道家風(fēng)水傳承網(wǎng)
return guid;XSf道家風(fēng)水傳承網(wǎng)
}
double占8字節(jié) 一個(gè)數(shù)字占1字節(jié) 為什么能精確16位 我覺得只有8位,,,
這是數(shù)據(jù)存儲(chǔ)方問題XSf道家風(fēng)水傳承網(wǎng)
XSf道家風(fēng)水傳承網(wǎng)
一個(gè)float型實(shí)數(shù)在內(nèi)存中占4個(gè)字,即32個(gè)二進(jìn)制bit,從低位到高位叫第0位到第31位.這32位可以分為3個(gè)部分:符號(hào)位(第31位),階碼(第30位到第23位共8位),尾數(shù)(最低23位)。 XSf道家風(fēng)水傳承網(wǎng)
1、符號(hào)位。最高位也就是第31位表示這個(gè)實(shí)數(shù)是正數(shù)還是負(fù)數(shù),為0表示正數(shù)或0,為1表示負(fù)數(shù). XSf道家風(fēng)水傳承網(wǎng)
2、階碼。第30位到第23位這8個(gè)二進(jìn)制位表示該實(shí)數(shù)轉(zhuǎn)化為規(guī)格化的二進(jìn)制實(shí)數(shù)后的指數(shù)與127(127即所謂偏移量)之和即所謂階碼. XSf道家風(fēng)水傳承網(wǎng)
規(guī)格化的二進(jìn)制實(shí)數(shù)的指數(shù)只能在-127---- 127之間,所以,一個(gè)float型數(shù)的最大值在 2^127即 3.4*10^38,最小值在-2^127即-3.4*10^38. XSf道家風(fēng)水傳承網(wǎng)
3、尾數(shù)。其他最低的23位即第22位到第0位表示該實(shí)數(shù)轉(zhuǎn)化為規(guī)格化的二進(jìn)制實(shí)數(shù)后小數(shù)點(diǎn)以后的其余各位即所謂尾數(shù). XSf道家風(fēng)水傳承網(wǎng)
XSf道家風(fēng)水傳承網(wǎng)
Double的計(jì)算與此類似,double的符號(hào)位為63位,指數(shù)為62~52位,共11位。表示的范圍為-1024~1023。尾數(shù)為51~0。表示的范圍為-1.7*10^308~ 1.7*10^308XSf道家風(fēng)水傳承網(wǎng)
XSf道家風(fēng)水傳承網(wǎng)
根據(jù)他們的存儲(chǔ)原理可知,雖然double存儲(chǔ)范圍很大,但精確度卻并不高XSf道家風(fēng)水傳承網(wǎng)
XSf道家風(fēng)水傳承網(wǎng)
因?yàn)樗怯每茖W(xué)計(jì)數(shù)法來表示的,類似1.2 * 10 ^ -38 ----- 3.5 * 10 ^38,XSf道家風(fēng)水傳承網(wǎng)
而精確度表示的是能精確表示的位數(shù),一般指有效數(shù)字,如:1.2 * 10 ^ -38 XSf道家風(fēng)水傳承網(wǎng)
雖然數(shù)很大,但精確度只有兩位有效數(shù)字XSf道家風(fēng)水傳承網(wǎng)
XSf道家風(fēng)水傳承網(wǎng)
所以,兩個(gè)double數(shù)盡量不要做“==”邏輯判斷,可能會(huì)產(chǎn)生BUG
C語言中,單精度浮點(diǎn)數(shù)十進(jìn)制時(shí)是22.84,轉(zhuǎn)化為16進(jìn)制是多少,怎么轉(zhuǎn)化的
整數(shù)部分16除,反向取;小數(shù)部分用16乘,取整數(shù)。具體如下XSf道家風(fēng)水傳承網(wǎng)
22÷16 = 1 余 6XSf道家風(fēng)水傳承網(wǎng)
1÷16 = 0 余 1XSf道家風(fēng)水傳承網(wǎng)
所以整數(shù)部分是16。小數(shù)部分XSf道家風(fēng)水傳承網(wǎng)
0.84x16 = 13(D) . 44XSf道家風(fēng)水傳承網(wǎng)
0.44x16 = 7 .04XSf道家風(fēng)水傳承網(wǎng)
0.04x16 = 0 .64XSf道家風(fēng)水傳承網(wǎng)
0.64x16 = 10(A) .24XSf道家風(fēng)水傳承網(wǎng)
0.24x16 = 3 .84XSf道家風(fēng)水傳承網(wǎng)
0.84x16 = 13(D) . 44XSf道家風(fēng)水傳承網(wǎng)
...以后循環(huán)了,所以XSf道家風(fēng)水傳承網(wǎng)
22.84(10) = 16.D70A3D70A3...(16)XSf道家風(fēng)水傳承網(wǎng)
還可以先“用2除反向取余數(shù)”和“用2乘正向取整數(shù)”變成二進(jìn)制,再從小數(shù)點(diǎn)開始左右每4位分開,前后不足4位的用0補(bǔ)齊,然后用對(duì)應(yīng)的16進(jìn)制符號(hào)直接寫出來就可以了。22.84化成二進(jìn)制是10110.11010111000010100011...→1'0110.1101'0111'0000'1010'0011→0001'0110.1101'0111'0000'1010'0011→16.D70A3...XSf道家風(fēng)水傳承網(wǎng)
要寫代碼,如下便可:XSf道家風(fēng)水傳承網(wǎng)
123456789101112#include "stdio.h"int main(void){ double x=22.84,t; char h[17]="0123456789ABCDEF", i,k; printf("%g(10) = %x.",x,int(x)); for(t=x-int(x),i=0;i<10;i ){ k=int(t*=16),t-=k; printf("%c",h[k]); } printf("...(16)\n"); return 0;}XSf道家風(fēng)水傳承網(wǎng)
C/C 沒有提供以指針形式輸出16進(jìn)制數(shù)據(jù)的功能。
總結(jié)
以上是生活随笔為你收集整理的c语言占八个字节的浮点数是,『double转八字节十六进制』double占8字节 一个数字占1字节 为什么能精确16位 我觉得只有8位,,,...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JQuery简单实用的模板引擎
- 下一篇: Android开发和測试实践 - 接入友