機器碼與真值
機器碼:乙個二進位制數,首位為這個數的符號位1為負符號 0為正符號
如:00000011 = 3
10000011 =-3
真值:
去除符號位後剩餘二進位制數計算出來的值,稱為真值
原碼、反碼、補碼(
計算中所有的二進位制都使用補碼表示
)
計算機使用補碼的原因:使計算更精確 只使用原碼或反碼計算會出現-0的情況使計算機更加簡便計算機中沒有減法 只有加法 如(-1)=(+-1) 所以有補碼的出現
資料分為有符號數和無符號數,無符號數所有值為正數
所有無符號數(正數的原碼、反碼、補碼一致)有符號數:(正數) 原碼==反碼==補碼
有符號數:(負數 )反碼==原碼(除符號位)所以數取反 補碼=反碼+1
原碼
取值範圍:-128到+127反碼11111111到01111111
正數 : 原碼=反碼補碼負數:除符號位(首位)外 所有的位數值取反
正數:原碼=反碼=補碼負數:在反碼的基礎上+1
如果在賦值 必須在對應的二制制前加 0b如 int a1=0b11111101
位運算(針對二進位制數的計算,計算後的值為補碼)
& 同1為1 有0為0| 同0為0 有1為1
~ 變1為0 變0為1
^相同為0 不同為1
<< 左移 各二進位制位左移,高位丟棄,低位補0 向左移n位相當於 原數*(2的n次方)
值會變更大或更小
>> 右移 各二進位制位右移,低位丟棄,高位補符號位 向右移n位相當於 原數/(2的n次方) 右移位不會改變乙個數的正負值 值會變小
實用技能:
1、任何乙個數與1進行(&)操作 可以判斷乙個數是奇偶數1= 00000001
只需要知道這個數的最後乙個數是0還是1 如果為1則為奇數 如果為0則為偶數
2、可以將任意數字設定為0
因為 &去處 有0為0 所以不管這個位上的值是多少 都會變為0
C語言 原碼反碼補碼與位運算
儘管能查到各種文獻,親自歸納出自己的體系還是更能加深對該知識的理解。目錄 一 機器數和真值 二 原碼,反碼和補碼的基礎概念 三 為什麼要使用原碼,反碼和補碼 四 原碼,補碼,反碼再深入 五 資料溢位測試 六 位運算的運算說明 七 位運算的簡單應用 一 機器數和真值 機器數 computer numb...
C語言原碼反碼補碼與位運算
目錄 一 機器數和真值 二 原碼,反碼和補碼的基礎概念 三 為什麼要使用原碼,反碼和補碼 四 原碼,補碼,反碼再深入 五 資料溢位測試 六 位運算的運算說明 七 位運算的簡單應用 一 機器數和真值 機器數 computer number 是數字在計算機中的二進位制表示形式 機器數有2個特點 一是符號...
C語言之原碼 反碼和補碼與位運算
目錄 機器數和真值原碼,反碼和補碼的基礎概念為什麼要使用原碼,反碼和補碼原碼,補碼,反碼再深入位運算的運算說明位運算的簡單應用 一 機器數和真值 機器數 computer number 是數字在計算機中的二進位制表示形式 機器數有2個特點 一是符號數位化,二是其數的大小受機器字長的限制 比如 十進位...