計算機中使用的資料可分成兩大類:
浮點數 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 ...