1. 程式人生 > >第二章 資訊的表示和處理 (2.1-end)

第二章 資訊的表示和處理 (2.1-end)

2.1.3 定址和位元組順序

假設型別為int的變數x的地址為0x100,那麼,x的4位元組(假設int為4位元組)將被儲存在0x100、0x101、0x102、0x103位置。

1、大小端法

☆一個w位的整數,其位表示[xw-1,…,x0],其中xw-1是最高有效位,x0是最低有效位。將w假設為8的整數,這些位就可以視作位元組(1byte=8bit),同樣可以分為最高有效位元組和最低有效位元組,這些位元組由8位組成。如果機器選擇在記憶體中按照從最低有效位元組到最高有效位元組的順序儲存物件則為小端法。

☆int型別的x變數的值用十六進位制表示為0x01234567。大小端法如圖:在這裡插入圖片描述
值0x01234567,高位位元組的十六進位制值為0x01(4位表示一個十六進位制數字)。目前許多微處理器是雙端法,而作業系統可能起到決定性作用:Android和iOS只能執行小端模式。

2、位元組順序所帶來的問題

☆通過網路傳送二進位制資料。小端法機器產生的資料被髮送到大段機器時,接收程式會發現,字裡的位元組成了反序的。所以網路應用程式的編寫需要遵守約定的位元組順序規則。

☆閱讀表示整數資料的位元組序列時。通常發生在檢查機器程式時。使用反彙編器工具閱讀小端法機器生成的機器級程式表示時,經常會將位元組按照相反的順序顯示。

☆編寫規避正常型別的程式時(舉例中使用c語言通過強制型別轉換或聯合允許一種資料型別引用另一個物件,而這種資料型別和建立這個物件時定義的資料型別不同。用不同機器執行程式打印出來的值位元組序列不盡相同,這是機器採用的大小端法不統一,而指標值(被強制轉型為資料型別)卻是完全不同!!!這是由於不同機器或作業系統配置使用不同的儲存分配機制)。

2.1.4 表示字串

字串“12345”以十六進位制、以ASCII碼錶示為31 32 33 34 35 00。00是終止符程式碼。在使用ASCII碼作為字元碼的任何系統上都將得到相同的結果,與位元組順序和字大小規則無關。因而,文字資料比二進位制資料具有更強的平臺獨立性。

2.1.5 表示程式碼

不同的機器型別使用不同的且不相容的指令和編碼方式。即使是完全一樣的程序,執行在不同的作業系統上也會有不同的編碼規則,因此二進位制程式碼是不相容的。二進位制程式碼很少能在不同機器和作業系統組合之間移植。

2.1.6 布林代數簡介

布林通過邏輯值true和false編碼為二進位制1和0,設計出一種代數,以研究邏輯推理的基本原則。

☆最簡單的布林代數式在二元集合{0,1}的基礎上定義的。布林代數中簡單的幾種運算如下圖:在這裡插入圖片描述NOT:p=0,~P=1;AND:p=1(true)且q=1時,p&q=1;OR:只要其中之一為真,則p|q=1為真;EXCLUSIVE-OR:當兩者僅有一者為真則為p^q=1真。

☆布林運算擴充套件為位向量運算。 位向量就是固定長度為w、由0和1組成的串。舉例:w=4,引數a=[0110],b=[1100]。那麼4種運算a&b、a|b、a^b、~b分別得到以下結果:在這裡插入圖片描述

☆表示有效集合。我們可以通過位向量[aw-1,…,a0]編碼任何子集A<={0,1,…,w-1},其中ai=1當且僅當i屬於A。位向量a=[01101001]表示集合A={0,3,5,8},而b=[01010101]表示集合B={0,2,4,6}。這種編碼集合的方法,布林運算|和&分別對應集合的並和交,而~對應於集合的補。a&b=[01000001],而A交B={0,6}。

☆練習題:在這裡插入圖片描述

2.1.7 C語言中的位級運算

☆C語言中的位級運算,下圖是對char資料型別表示式求值的例子:在這裡插入圖片描述
習題:在這裡插入圖片描述

☆掩碼運算。掩碼0xFF(最低的8位為1)表示一個字的低位位元組。位級運算x&0xFF將生成一個由x的最低有效位元組組成的值,而其他的位元組就被重置為0。若x=0x89ABCDEF,則x&0xFF=0x000000EF。表示式~0將產生一個全為1的掩碼,不管機器的字長多少。
習題:在這裡插入圖片描述

2.1.8 C語言中的邏輯運算

☆C語言中的邏輯運算。邏輯運算認為所有非零引數都表示true,而0表示false。分別返回1和0。舉例如下:在這裡插入圖片描述
邏輯運算子&&和||與它們對應的位級運算&和|之間的第二個重要區別:如果對第一個引數就能確定表示式的結果,那麼邏輯運算子就不會對第二個引數求值。
習題:在這裡插入圖片描述

2.1.9 C語言中的移位運算

☆左移:對於一個位表示為[xw-1,…,x0]的運算元x,C表示式x<<k會生成一個值,其位表示為[xw-k-1,…,x0]。也就是說,x向左移動k為,丟棄最高的k位,並在右端補上k個0。移位量應該在0至w-1之間的值,移位運算時可以從左向右可結合的,所以x<<j<<k等價於(x<<j)<<k。
☆右移:邏輯右移在左端補k個0。得到的結果是[0,…,0,xw-1,…,xk]。算術右移是在左端補齊k個最高有效位的值,得到的結果是[xw-1,…,xw-1,…,xk]。
☆舉例:(斜體表示填充值)在這裡插入圖片描述
☆注意:C語言並沒有定義有符號數應該使用算術右移或者是邏輯右移。實際上,幾乎所有的編譯器/機器組合都對有符號數使用算術右移,而且程式設計師也都假設機器會使用這種右移。另一方面,對於無符號數,右移是邏輯的。與C相比,java明確定義,x>>k會靜x算術右移k個位置,而x>>>會對x做邏輯右移。

☆練習題(習題答案在章末):在這裡插入圖片描述

public class hello{
	public static void main (String[] args){	
	System.out.println("博主,湖科大商學院學生,交朋友呀");
  	}
}

相關推薦

第二 資訊表示處理 (2.1-end)

2.1.3 定址和位元組順序 假設型別為int的變數x的地址為0x100,那麼,x的4位元組(假設int為4位元組)將被儲存在0x100、0x101、0x102、0x103位置。 1、大小端法 ☆一個w位的整數,其位表示[xw-1,…,x0],其中xw-1是最高

第二 資訊處理表示2.1-ing)

2.1資訊儲存 大多數計算機使用8位的塊,或者位元組,作為最小的可定址單位。機器級程式將記憶體視為一個非常大的位元組陣列,稱為虛擬記憶體。記憶體的每個位元組都由一個唯一的數字來標識,稱為它的地址,所有可能地址的集合就稱為虛擬地址空間。(C語言中一個指標的值都是某

第二 資訊表示處理2.2

2.2 整數表示 本節描述用來編碼整數的兩種不同方式:無符號數和有符號數。描述過程相關術語如下圖: 2.2.1 整數資料型別 圖示為32位與64位整數資料型別的典型取值範圍: C語言標準定義了每種資料型別必須能夠表示的最小取值範圍: 2.2.2 無符號數的編碼

第二 資訊表示處理

2.1 資訊儲存   最小的可定址記憶體單位,是位元組,而不是第一章提到的位。虛擬記憶體被視為一個非常大的位元組陣列,記憶體的每個位元組都有一個唯一的數字來標識,稱它為地址,所有可能地址的集合則稱為虛擬地址空間。 2.1.1 十六進位制表示法 十六進位制轉二進位制: 二進位制轉十六進位制:(最

深入理解計算機系統 第二 資訊表示處理

  欣哥劃的重點: 第二章比較難,建議至少掌握下面幾個知識點: 1. 位元組順序 : 大端和小端 2. 執行 圖2-24, 圖2-25程式 show-bytes.c 觀察結果,看看有什麼問題 3. 理解布林運算,位運算 4. 理解無符號數和有符號數, 給一個數,能計算出補碼 5. 理解浮點數的表

深入理解計算機系統----第二 資訊表示處理

1.資訊儲存 系統將8位的塊作為最小的可定址儲存器單位,機器級程式系統看成一個大的陣列,然後通過地址來獲得儲存器中的這些塊的內容。 資料在計算機中的儲存都是用二進位制,不過二進位制不易表示,一般我們用十六進位制來表示。如八位的十六進位制範圍為00~FF。 計算機的字長代表其整數

深入理解計算機系統_第一部分_第二_資訊表示處理

深入,並且廣泛 -沉默犀牛 文章導讀 這一章介紹了計算機中資訊(即二值訊號)的表示和處理。 資訊儲存 1.1 十六進位制表示法:介紹了十六進位制的產生和十六進位制、十進位制、二進位制之間的相互轉換規律 1.2 字資料大小:介紹了在不同機器和編譯器中,資料型別資料

深入理解計算機系統-第二-資訊表示處理

2.1.2 每臺計算機都有一個字長,指明證書和指標資料的標稱大小。因為虛擬地址是以這的字來編碼的,所以字長決定的最重要的系統引數就是虛擬地址空間的最大大小。對於一個字長為n位的機器來說,虛擬地址的大小為2^n-1. 2.1.4定址和位元組順序 對於跨越多位元組的程式物件,我們要建立兩個規

《深入理解計算機系統》讀書筆記 —— 第二 資訊表示處理

> 本章主要研究了計算機中無符號數,補碼,浮點數的編碼方式,通過研究數字的實際編碼方式,我們能夠了解計算機中不同型別的資料可表示的值的範圍,不同算術運算的屬性,可以知道計算機是如何處理資料溢位的。瞭解計算機的編碼方式,對於我們寫出可以跨越不同機器,不同作業系統和編譯器組合的程式碼具有重要的幫助。 > @[T

深入理解計算機系統 第二資訊表示儲存、

引言: 這一章我們研究在計算機上如何表示資料和其他型別資料的基本屬性,以及計算機對這些資料執行操作的屬性。在整數運算中,重點描述無符號數和數的補碼所表示的特性;而對於IEEE標準的浮點型資料,一是它是如何表示資料的,二是浮點運算的數學形式。 三種常見的資料型別:整數分為無符號數和有符號數。無

《Linux性能及調優指南》第二:監控基準工具2.1-2.2

進程 我們 處理 顯示 linux操作系統 uid ast gnome iozone 翻譯:飛哥 (http://hi.baidu.com/imlidapeng) 版權所有,尊重他人勞動成果,轉載時請註明作者和原始出處及本聲明。 原文名稱:《Linux Performanc

《Python基礎教程》第二:列表元組(2

ber 次數 eve sorted 反向 bsp del 對象 復制 list函數可以將字符串轉換為列表 ‘ ‘.join(somelist)可以將列表轉換為字符串 從列表中刪除元素可以使用del語句來實現 方法是與對象有緊密聯系的函數:對象.方法(參數) append方

2】信息的表示處理

float 執行 單獨 因此 com alt 卡片 acl AC 1.現代計算機存儲和處理的信息都以二值信號表示。 2.機器為什麽要使用二進制進行存儲和處理? 答:二值信號能夠很容易的被表示、存儲、傳輸。例如: 可以表示為穿孔卡片上有洞和無洞、導線上的高壓和低壓,順逆

Windows核心編程之核心總結(第二 字符字符串處理)(2018.5.27)

Windows核心編程之核心總結學習目標 第二章是學習字符和字符串處理,為了更好理解這一章的內容,我自行添加了其他輔助性內容:存儲模式(大端存儲和小端存儲)、字符編碼方案(一看就懂)。以下是這一章的學習目標:1.大端存儲和小端存儲2.字符編碼方案3.ANSI和Unicode字符、字符串,Windows自定義數

深入理解計算機系統----資訊表示處理

1、最小的可定址的記憶體單位是位元組,記憶體的每個位元組都由一個唯一的數字來標識,稱為地址,所有可能地址的集合稱為虛擬地址空間; 2、十六進位制數字0代表4個二進位制0;二進位制表示中,x=2的n次方就是1後面跟n個0;當n表示成i+4j的形式,可以把x寫成開頭的十六進位制數為1(i=0

Atitit 工作流之道 艾提拉著 BPM,即業務流程管理 目錄 1. 流程入門 思想 歷史 分類 1 第二篇 第2 初識工作流 2 1.1. 2.3 工作流技術相關規範  2.3.1 W

Atitit 工作流之道  艾提拉著   BPM,即業務流程管理   目錄 1. 流程入門 思想 歷史 分類 1 第二篇  第2章 初識工作流 2 1.1.  2.3 工作流技術相關規範  2.3.1 WfMC之

《深入理解計算機系統》筆記——資訊表示處理

資訊的儲存 十六進位制表示法 字 資料大小 定址和位元組順序 資料型別 字串的表示 程式碼的表示 資訊的儲存 資訊是客觀事物的反映,是經過處理加工後得出的資料。 資料是客觀事物的記錄。 計算機內所有的資訊均以二進位制的形式表示,

資訊表示處理(一)資訊儲存

資訊儲存 大多數計算機使用8位的塊,或者位元組(byte),作為最小的可定址的記憶體單位,而不是訪問記憶體中單獨的位。機器級程式將記憶體視為一個非常大的位元組陣列,稱為虛擬記憶體。記憶體的每個位元組都由一個唯一的數字來標識,稱為它的地址,所有可能地址的集合就稱為虛擬地址空間。顧名思義,這個虛擬地址空間只是一

資訊表示處理 及 CS:APP 15213 datalab

資訊的表示和處理 在通用計算機中中,位元組作為最為最小 的可定址的記憶體單元,而不是訪問記憶體中單獨的位。 定址和位元組順序 big endian (大端法),資料最高位元組部分地址在地址處,和人的感覺邏輯相似 little endian (小端法),低位元組部分在低地址處 布林代數 1 TRUE 2

深入理解計算機系統 -- 資訊表示處理

1. 資訊的儲存     大多數計算機使用 8 位的塊,或者位元組,作為最小的定址記憶體單位,而非訪問記憶體中單獨的位,機器級程式將記憶體視為一個非常大的位元組陣列,稱為 虛擬記憶體 ,記憶體的每個位元組都用一個唯一的數字標識,稱為它的 地址 。以 C 語言的指標為例,指標使用時