1. 程式人生 > >深入理解計算機系統 2.4.2 IEEE浮點表示詳細講解

深入理解計算機系統 2.4.2 IEEE浮點表示詳細講解

定義

IEEE浮點標準用以下公式表示\(V = (-1)^s * M * 2^E\)

  • 符號(sign):s決定這書是負數(s = 1)還是正數(s = 0),而對於數值0的符號位解釋作為特殊情況處理 。
  • 尾數(significand):M是一個二進位制小數,它的範圍是\(1 ~ 2-\varepsilon\),或者是\(0 ~ 1-\varepsilon\)。
  • 階碼(exponent):E的作用是對浮點數加權,這個權重是2的E次冪(可能是負數)。

將浮點數的位表示劃分為三哥欄位,分別對這些值進行編碼:

  • 一個單獨的符號位s直接編碼符號s。
  • k位的解碼欄位\(exp=e_k-1…e_1e_0\)編碼階碼E。
  • n為小數字段\(frac=f_k-1…f_1f_0\),但是編碼出來的值也依賴於解碼欄位的值是否為0.

在單精度浮點格式(C語言中的float中),s、exp和frac欄位分別為1位、k=8位和n=23位,得到一個32位的表示。在雙精度浮點格式(C語言中的double)中,s、exp和frac欄位非別為1位、k=11位和n=52位,得到一個64位的表示。

相關推薦

深入理解計算機系統 2.4.2 IEEE表示詳細講解

定義 IEEE浮點標準用以下公式表示\(V = (-1)^s * M * 2^E\) 符號(sign):s決定這書是負數(s = 1)還是正數(s = 0),而對於數值0的符號位解釋作為特殊情況處理 。 尾數(significand):M是一個二進位制小數,它的範圍是\

深入理解計算機系統4.2)---硬體的魅力

引言   這個系列已經很久沒更新了,記得上一篇博文已經是三月份了,實在是抱歉。最近業餘時間沒有以前充裕了,因此更新一篇博文已經變成了一種奢侈。記得以前剛開始寫的時候,最多的時候LZ一天寫過3篇博文,現

深入理解計算機系統之整型與

在計算機儲存系統裡面,算術型別可以分為兩類:整型(intergral type,包括字元和布林型別在內)和浮點型。在看簡單地看了深入理解計算機系統的第二章後,有了稍微深刻但是有非常淺顯的理解,然後又看了阮師兄的一篇博文,所以做了一點筆記。 下面先來看一個例子程

深入理解計算機系統(1.2)------存儲設備

高速 計算 想法 知識 1-1 運用 文件 字符 設備   上一章我們講解了hello world 程序在計算機系統中是如何運行的。 hello 程序的機器指令最初是存放在磁盤上的,當程序加載時,他們被復制到主存;當處理器運行程序的時候,指令又從主存復制到處理器。相似的,數

2018-2019-1 20189221 《深入理解計算機系統》第 2 周學習總結

2018-2019-1 20189221 《深入理解計算機系統》第 2 周學習總結 《深入理解計算機系統》第二章 本章講述了計算機的算術運算,重點描繪了無符號數和數的補碼錶示的特性。 資訊儲存 計算機字長,指明指標資料的標稱大小。32位機器虛擬地址空間為4GB。64位為16EB。64位機器可以執行32

深入理解計算機系統》 練習題2.42-2.44

補碼除以2的冪 具體講解在書裡。這裡直接給幾個結論: 1)有符號數即補碼數執行的是,算術右移。 2)有變數x和 2 k

深入理解計算機系統》 練習題2.36答案

強制型別轉換與其他運算的先後 int main(void) { int x = -pow(2, sizeof(int) * 8 - 1); /* Tmin */ int y = -1; auto

深入理解計算機系統》 練習題2.37答案

XDR庫中的安全漏洞 1)size_t是unsigned int型的。 2)malloc的函式原型是void *malloc(unsigned int size)。 如果第9行程式碼裡,ele_cnt

深入理解計算機系統》 練習題2.31答案

練習題2.31 你的同事對你補碼加法溢位條件的分析有些不耐煩了,他給出了一個函式tadd_ok的實現,如下 //determin whether arguments can be added without overflow //WARNING: THIS code is

深入理解計算機系統》 練習題2.32答案

編寫函式tsub_ok的程式碼,引數是x和y,執行的運算是x-y,如果計算x-y不產生溢位,函式就返回1.假設你寫的程式碼如下: int tsub_ok(int x, int y) { return tadd_ok(x,-y); } tadd_ok函式

深入理解計算機系統2.4)------整數的表示(無符號編碼和補碼編碼)

class 映射 們的 c語言 正數 裏的 小例子 負數 類型   上一篇博客我們主要介紹了布爾代數和C語言當中的幾個運算符。那麽這一篇博客我們主要介紹在計算機中整數是如何表示的,諸如我們在編碼過程中遇到的對數據類型進行強制轉換可能會得到意想不到的結果在這篇博客裏你會得到解

深入理解計算機系統——2.1.4定址和位元組順序

對於跨越多位元組的程式物件,我們必須建立兩個規則: 這個物件的地址是什麼?儲存器如何排列這些位元組? 在幾乎所有的機器上,多位元組物件被儲存為連續的位元組序列, 物件的地址為所使用的整個位元組中首地址(最小地址)。 例如:一個int 的變數X的地址為0x100, 那

深入理解計算機系統-作業2.10

oid 位置 pla borde 作業2 nbsp body 開始 width 1 void inplace_swap(int *x, int *y){ 2 *y = *x ^ *y;/*step1*/ 3 *x = *x ^ *y;/*step2*/ 4

3.2深入理解計算機系統》筆記(二)內存和高速緩存的原理【插圖】

img sram 本質 text ddr rate too 是我 很大的 《深入計算機系統》筆記(一)主要是講解程序的構成、執行和控制。接下來就是運行了。我跳過了“處理器體系結構”和“優化程序性能”,這兩章的筆記繼續往後延遲! 《深入計算機系統》的一個很大的用處

深入理解計算機系統2.8)---點數的舍入,Java中的舍入例子以及點數運算(重要)

https://www.cnblogs.com/zuoxiaolong/p/computer12.html 前言     上一章我們簡單介紹了IEEE浮點標準,本次我們主要講解一下浮點運算舍入的問題,以及簡單的介紹浮點數的運算。   之前我們已經提到過,有很多小數是二進位制

深入理解計算機系統 練習題2.25 答案與分析

#include <stdio.h> #include "stdafx.h" #include <iostream> using namespace std; float sum_elements(float a[], unsi

深入理解計算機系統 練習題2.31 答案與分析

測試程式碼 #include <stdio.h> #include "stdafx.h" #include <iostream> using namespace std; int uadd_ok(int x, int y) {

深入理解計算機系統(原書第三版)練習題2.6 感性認識整型和型別(同一個數)在機器中表示

/** * 練習題2.6 感性認識整型和浮點型別(同一個數)在機器中表示 * 由於我的機器是小端表示,將列印結果還原真實數並用二進位制表示 * 41913500 -->(還原) 0x00359141 -->(二進位制) 0000 0000 0011 0101

深入理解計算機系統》 練習題3.2-3.3

彙編命令總結 1)%eax,%dx就是暫存器的名字 2)(%rax)。只要是有括號的了,那就是記憶體引用。注意x86-64中的記憶體引用總是用四字長暫存器給出的,即暫存器名字開頭都是r開頭的。(%rax

深入理解計算機系統(原書第2版)》pdf

出版者的話 譯者序 前 言 第1章 計算機系統漫遊1 1.1 資訊就是位+上下文1 1.2 程式被其他程式翻譯成不同的格式3 1.3 瞭解編譯系統如何工作是大有益處的4 1.4 處理器讀並解釋儲存在儲存器中的指令5 1.4.1 系統的硬體組成5 1.4.2 執行hello程式7 1.5 快取記憶體至關重要7