Lesson02 二進位制運算

2021-07-22 09:32:09 字數 1148 閱讀 5450

計算機中,數值都是以補碼的形式存在的, 原碼是被人腦識別的,補碼是被機器儲存的。

要求得補碼,首先要確定資料長度(幾位數),首位表示符號位,1為負數,0為正數,後面所有位表示數值。

正數的補碼是自己  負數的補碼為,符號位後面的所有位取反,加1:

[1]  => [00000001]原 => [00000001]補

[-5] => [10000101]原 => [11111010]反+[00000001] => [11111011]補

補碼求原碼:補碼-1,取反

[00000001]補 =>  [00000001]原 == 1

[11111011]補  => [11111011]-1 => [11111011] + [11111111](-1補碼) => [11111010]反 => [10000101]原 == -5

+0  -0 的補碼還是自己

計算機中,只有加法,沒有減法,減法會轉為加負數運算,計算結果保留規定的位數,多餘的數高位溢位。

如1-5在計算機中的運算方式(8位):

[1]  == [00000001]原 == [00000001]補

[-5]==[10000101]原==[11111010]+[00000001]==[11111011]補

1-5 == [00000001]補 + [11111011]補 

== [11111100]補 

== [11111100] -1 (負數原碼=補碼-1,再取反)

== [11111100]+[11111111]==[11111011]

==[10000100]

==-4

補碼的好處:方便計算機進行運算,計算機只能進行相加的運算,把資料都按補碼儲存後,符號位也會參與計算。

邏輯左移、算術左移:右邊補0

邏輯右移:左邊補0

算術右移:首位為1,補1,否則補0

與:&&   如: a、b都為非0,a&b==true 否則a&b==false   

或:||      如:a、b有乙個為非0,a||b==true,否則a||b==false

非:!    如:a為非0,!a==false

異或:^   如:a、b同為0或同為非0,a^b同==true,否則a^b同==false

把浮點數轉為整數運算,用的時候除以相應倍數。

02 二進位制運算

二進位制加法從低位開始逢二進1,比如29 5 34換成2進製就是11101 00101 100010 對於計算機來說它是只能進行加法運算不能做減法運算的,所以減去乙個二進位制數就等於加上這個數的負數。原碼 通過最高位作為符號位的方法來表示乙個二進位制數的正負,0表示正1表示負 比如 10001和 1...

二進位制運算

運算子 符號含義例子與 兩邊都為真時為真 1 1 1或 任何一邊為真時為真1 非取反 如果1則為0 如果0為1 1 0 異或 兩邊相同為1 兩邊不同為0 1 1返回false 1 2返回true 運算子符號含義 例子邏輯與 判斷兩邊 都為真時為真 true true true或 判斷兩邊 任何一邊為...

二進位制運算( )

負數轉化二進位制步驟 將負數取絕對值,得到其絕對值的二進位制 6取絕對值為6,6的二進位制 0110,然後補充0110位32位 000 000 0110 一共32位,即0110前面還有28個0 然後每位取反 111 111 1001 一共32位 接著對上面得到的二進位制 111 111 1001 進...