# 作業6 習題解答與出題 >作者:郭睿豐 >班級:資訊一甲 >學號:D1249858 ## 習題 **試指出所需要的遮罩與邏輯運算式以完成下列的任務目標: a. 在一個八位元字串中前四個位元置入1,並且其餘位元保持不變。 b. 在一個八位元字串中的最高有效位元取其補數,並且其餘位元保持不變。 c. 在一個八位元字串中取其補數。 d. 在一個八位元字串中的最低有效位元置入0,並且其餘位元保持不變。 e. 在一個八位元字串中,除了最高有效位元,其餘置入1,最高有效位元保持不變。 f. 在一個RGB 點陣圖的圖像中,濾掉所有的綠色元素,其中每個像素為24 位元字串,而中間的八位元表示綠色資訊。 g. 反轉24 位元的RGB 點陣圖中的所有像素。 h. 將24 位元的RGB 點陣圖中的所有像素值設為1,亦即色彩為白色。** ## 相關名詞介紹 **1. 位元遮罩:** 位元遮罩是一個二進位數字,其中的每個位元都有特定的值(0 或 1)。它用於操作其他二進位數字,通常透過邏輯運算。位元遮罩通常用於遮掩或選擇一個二進位數字的特定部分,或者對特定的位元進行修改。 **2. 邏輯運算式** 邏輯運算式是一種對二進位數字進行邏輯操作的表達式。這些操作包括 AND、OR、XOR 和 NOT等。 AND(與運算): 兩個位元都為1,結果才為1。 OR(或運算): 兩個位元中有一個為1,結果就為1。 XOR(異或運算): 兩個位元不同,結果為1。 NOT(非運算): 將每個位元取補數。 ## 解答 **a.** * 遮罩:0b11110000 * 邏輯運算式:OR 在這邊用0b做為前綴是表示後面的數字是以二進位呈現的,然後透過二進位來做位元的運算。 因題目所要求,前面四個位元要置入1,其餘位元保持不變,因此我們透過原始值和遮罩0b11110000做OR條件運算,由於遮罩前面四個位元都是1,所以原始值和遮罩經過OR條件運算以後,前面四個位元得出的結果也一定都是1,而遮罩後面的4個位元0與原始值做OR條件運算後,原本的結果則不會被影響 **b.** * 遮罩:0b10000000 * 邏輯運算式:NOT 遮罩第一個位元為1,用來對字串中的最高有效位元取其補數,後面七個位元0則表示其餘位元不變,用邏輯運算式NOT來取補數 **c.** * 遮罩:無 * 邏輯運算式:NOT 同上利用邏輯運算式NOT來取補數 **d.** * 遮罩:0b11111110 * 邏輯運算式:AND 遮罩的最後一個位元為0,將其與原始值透過邏輯運算式AND運算後,最低有效位元得出的結果必定為0,其餘七個位元則設為1,使這些位元保持不變 **e.** * 遮罩:0b01111111 * 邏輯運算式:OR 遮罩的第一個位元設為0,使其經過邏輯運算式OR運算過後,最高有效位元不變,其餘七個位元則設為1,表示剩下的位元置入1 **f.** * 遮罩:11111111 00000000 11111111(R,G,B) * 邏輯運算式:AND 利用遮罩做AND邏輯運算,紅和藍的元素和11111111做AND運算過後,位元保持不變,而綠色則和00000000做AND運算,使其位元必為00000000,進而濾掉綠色元素 **g.** * 遮罩:11111111 11111111 11111111 * 邏輯運算式:XOR 透過邏輯運算式XOR,表示進行位元異或的運算,像是當位元0(原始值) XOR 位元1(遮罩) 可得出位元1,而位元1(原始值) XOR 位元1(遮罩)則可得出位元0,使其達到反轉的效果 **h.** * 遮罩:11111111 11111111 11111111 * 邏輯運算式:OR 由於遮罩全為1,透過OR邏輯運算後,得出的像素值位元必為1,即可得到白色 ## 出題 **設有一個八位元字串A,為以下的條件設計位元遮罩: a.將A的奇數位元(第1、3、5、7位)置入1,偶數位元保持不變。 b.對A的第3位至第6位(含)的位元取一補數(0和1互換)。** ### 答案 **a.** * 遮罩:0b10101010 * 邏輯運算式:OR **b.** * 遮罩:0b00111100 * 邏輯運算式:XOR
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up