資料在計算機中的表示 進製轉換 浮點數表示

2022-09-07 07:57:10 字數 2890 閱讀 2024

計算機中使用的資料可分成兩大類:

浮點數 ieee 754

資料格式:

二進位制八進位制

十六進製制

十進位制000000

0000111

1001022

2001133

3010044

4010155

5011066

6011177

71000108

81001119

9101012a

10101113b

11110014c

12110115d

13111016e

14111117f

15進製轉換:

10進製和r進製之間的轉換

10進製整數轉任意進製整數(c++**)

#include

using

namespace std;

// 字串反轉

void

strreverse

(char

* str)

str[len]

='\0';}

//十進位制轉任意進製(小於等於36)

void

dectoarbitrary

(int num,

int radix,

char

* str)

int i =0;

char ch=

"0123456789abcdefghijklmnopqrstuvwxyz"

;while

(num !=0)

if(flag) str[i]

='-'

;strreverse

(str);}

intmain()

任意進製整數轉10進製整數(c++**)
#include

using

namespace std;

// 冪函式

intmypow

(int x,

int n)if(

(z >>=1)

==0)}

}//任意進製轉十進位制(小於等於36)

/* str(r) ==> num(10) */

void

arbitrarytodec

(char

* str,

int radix,

int& num)

;while

(i >=0&&

isalnum

(str[i]))

}elseif(

isdigit

(str[i]))

// 數字

sum +

= n *

mypow

(radix,len - i -1)

; i--;}

if(str[0]

=='-'

) sum *=-

1;num = sum;

}int

main()

浮點數 ieee 754

ieee754標準(規定了浮點數的表示格式,運算規則等)

32位的浮點數:

64位的浮點數

符號位1位,階碼域11位,尾數域52位,指數偏移值是1023。因此規格化的64位浮點數x的真值為:x=

(−1)

s×(1.

m)×2

e−1023x=

(−1)

s×(1

.m)×

2e−1

023e=e-1023

乙個規格化的32位浮點數x的真值表示為x=

(−1)

s×(1.

m)×2

e−127x=(

−1)s

×(1.

m)×2

e−12

7e=e-127

例1:已知754標準儲存格式十六進製制,求浮點數十進位制數值

若浮點數x的754標準儲存格式為(41360000)16,求其浮點數的十進位制數值。

解:c++**實現

#include

#include

using

namespace std;

void

hex_to_float()

intmain()

例2:將十進位制浮點數轉換為754標準的32位浮點數的二進位制儲存格式

將數(20.59375)10轉換成754標準的32位浮點數的二進位制儲存格式。

解:c++**實現

#include

#include

using

namespace std;

void

float_to_bin()

void

float_to_hex()

intmain()

數的機器碼表示

真值:一般書寫的數

機器碼:機器中表示的數, 要解決在計算機內部數的正、負符號和小數點運算問題。

注:正數的原碼、反碼、補碼、移碼都相同,並且在計算機中儲存帶有符號的數都是以補碼形式儲存,用補碼形式進行運算的。

如:[ 1] = [0000 0001]原 = [0000 0001]反 = [0000 0001]補 = [0000 0001]移

[-1] = [1000 0001]原 = [1111 1110]反 = [1111 1111]補 = [0111 1111]移

附:bitset: c ++標準庫參考/c ++標準庫標頭檔案/bitset class

負數在計算機中的表示

今天,老大讓我調查乙個浮點數轉換為整數的問題。自己就查了些資料,順便複習一下原碼 反碼和補碼。原碼 將乙個整數,轉換成二進位制,就是其原碼。如單位元組的5的原碼為 0000 0101 5的原碼為1000 0101。反碼 正數的反碼就是其原碼 負數的反碼是將原碼中,除符號位以外,每一位取反。如單位元組...

負數在計算機中的表示

原碼 將乙個整數,轉換成二進位制,就是其原碼。如單位元組的5的原碼為 0000 0101 5的原碼為1000 0101。反碼 正數的反碼就是其原碼 負數的反碼是將原碼中,除符號位以外,每一位取反。如單位元組的5的反碼為 0000 0101 5的原碼為1111 1010。補碼 正數的補碼就是其原碼 負...

小數在計算機中的表示

執行如下 得到結果 你猜是多少呢?嗯你沒有看錯得到的答案是57.所以為什麼會出現這種情況呢?首先需要 的是0.58這個數字是如何在計算機中儲存的。我們一般用下面格式表示浮點數。sp m 其中s是符號位,p是階碼,m是尾數。單精度浮點數是32位,雙精度浮點數是64位。s pm表示公式 偏移量1823 ...