2 原碼、反碼和補碼
3 位運算
計算機中的資料總是以二元狀態存在的,通常用0或1兩種符號來表示,它也方便用於表示電路中的高低電平。
在計算機中是用二進位制來表示資料的。二進位制中1=1,2=10,4=100,8=1000。生活中,我們用得比較多的就是10進製,那麼要怎麼把10進製與2進製進行轉換呢?
在計算機中,最小的單位是位(bit),也就是二進位制中的每乙個數值,最小的資料儲存單位是位元組(byte)。乙個位元組由8位組成,這8位中最左側的一位是符號位,0表示正數,1表示負數。
原碼就是資料的實際值,如1的原碼為 0000 0001,-2的原碼為1000 0010,0的原碼為0000 0000。8位二進位制數能表示的最大範圍是[-127,127]。
正數的反碼是原碼本身,負數的反碼是在原碼的基礎上,符號位不變,其餘位取反,如1的原碼是0000 0001,反碼也是0000 0001;-2的原碼為1000 0010,反碼為1111 1101。8位二進位制數能表示的最大範圍是[-127,127]。
正數的補碼是原碼本身,負數的補碼是原碼的基礎上符號位不變,其餘位取反然後加1。8位二進位制數能表示的最大範圍是[-128,127]。
【注:0的原碼、反碼、補碼是同乙個!】
1 + (-2) = -1,對應的原碼為 0000 0001 + 1000 0010 = 1000 0011 = -3, 這是不正確的。
對應的反碼為 0000 0001 + 1111 1101 = 1111 1110,轉換成原碼 1000 0001=-1,正確。
如果 1-1用反碼計算的話,0000 0001 + 1111 1110 = 1111 1111,轉換成原碼就是1000 0000 = -0,是錯誤的表示。
所以如果用補碼來計算0000 0001 + 1111 1111 = 0000 0000,對應的原碼也是0000 0000=0,正確。在補碼中1000 0000表示-128。
-35 + -128用補碼參與運算結果是多少?
如圖,計算結果超出了8位,實際結果應該是-163,但是8位能表示的範圍是[-128, 127],所以上面的計算結果溢位了。取後8位即為溢位的結果93。
通過**表示:
public
static
void
main
(string[
] args)
溢位後的結果遵循這個規則,如果-128向下溢位1位,結果是127,溢位2位,結果是126,以此類推,-128溢位35,結果就是93。同理,127向上溢位1位就是-128。
1b = 8b
1kb = 1024b
1mb = 1024kb
1gb = 1024mb
按位與的運算規則是:相同位都為1則為1,否則為0;
舉例:按位或的運算規則是:相同位只要有乙個為1則為1,否則為0。
舉例:按位異或的運算規則是:相同位相同則為0,不同則為1。
舉例:右移規則:符號位不變,低位(0)補齊,符號位補移出的高位(1)。
舉例:左移規則:符號位不變,低位補齊。
舉例:-3 << 5:
-3:原碼:1000 0011,反碼:1111 1100,補碼:1111 1101;
1111 1101左移5位,1010 0000,對應的反碼是1001 1111,原碼是1110 0000,即-3 << 5 = -96。
計算機與程式設計師
計算機專業的學生,做一名程式設計師似乎是那麼的理所當然,每天面對著 除錯 修改 不可否認,在當接觸程式時,我是那麼肯定的認為自己要做好乙個程式設計師 或是所謂的工程師 可是這樣是不是自己把自己鎖進了一間由 堆砌的房間裡了,摸著鍵盤敲 自然有它枯燥的地方,當我接觸到3dmax 遊戲引擎 maya時 情...
程式設計師喝酒的計算機文化
程式設計師喝酒的計算機文化 程式設計師喝酒的計算機文化 大家喝的是啤酒。這時你入座了。你給自己倒了杯可樂,這叫低配置。你給自已倒了杯啤酒,這叫標準配置。你給自己倒了杯茶水,這茶的顏色還跟啤酒一樣,這叫木馬。你給自己倒了杯可樂,還滴了幾滴醋,不僅顏色跟啤酒一樣,而且不冒熱氣還有泡泡,這叫超級木馬。你的...
一名程式設計師對計算機的基本了解
對於一名程式設計師來說,了不了解計算機都不會對他的工作造成太大的影響,但想要成為一名優秀的程式設計師,需要對計算機有一定程度上的了解。控制器類似於人的大腦,它主要負責的是控制各個硬體的執行。內部主要部件如下 指令暫存器 存放由儲存器取得的指令。解碼器 將指令中的操作碼翻譯成控制訊號。時序節拍發生器 ...