看到一句i2s的data是以補碼形式來表現資料。再次查閱得出以下只管結論:
####1,首先直觀舉例機器裡面是如何存放有符號數的:####
1在機器裡面表示為 0000 0001h
0在機器裡面表示為 0000 0000h
-1在機器裡面表示為1111 1111h
-2在機器裡面表示為1111 1110h
…
其實機器並不知道使用者是存放的有符號,還是無符號數,還是小數等待其他資料型別,一切都是人為邏輯通過編譯器來規定。原碼,不用說,就是二進位制數加上符號位,其實沒啥實際意義。1原碼是0000 0001,-1原碼是1000 0001。####2,通過上面例子再來理解概念公式:####
反碼,所有bit都取反。例如0000 0001h的反碼,就是1111 1110h。
補碼的概念,就是計算機裡面資料儲存都是以補碼形式存放。就像最開頭1,-1,0,-2舉例一樣;所以說算乙個數的補碼,其實就是算他在機器裡面的存放形式而已。
補碼的計算公式。如果是正數(1),補碼就是這個數的二進位制(0000 0001);如果是負數(-1),補碼= 這個負數絕對值的反碼+1,也就是補碼(-1)= ~|-1|+1,所以最終得出-1的補碼就是1111 1111。
3,總結
i2s裡面的資料是以補碼的形式表現,其實就是說資料是有符號型別的。沒啥特別意思。
再度理解原碼 反碼 補碼
很早就開始接觸這些熟悉又陌生的關鍵字,但是,時不時還會有錯 看定義 正數的原碼 反碼 補碼形式一致,負數的反碼為原碼的數值位取反,補碼為反碼 1也即是原碼的數值位取反再 1,計算機中以補碼表示資料和運算 舉例 34原碼 反碼 補碼 00100010 34原碼 10100010,反碼 11011101...
原碼,反碼,補碼,個人理解
原碼 二進位制定點表示法,即最高位為符號位,0 表示正數,1 表示負數,其餘的位表示數值的大小 正數的最高位為0 負數的最高位為1 例子 符號位 數值位 7 0 0000111 7 1 0000111 反碼 正數的反碼與原碼相同,沒有任何改變 負數的反碼 與原碼的符號位不變,其他值取反,也就是0變1...
原碼,反碼與補碼理解
1.寫作目的 平時學習總結的學習筆記,方便自己理解加深印象。同時希望可以幫到正在學習這方面知識的同學,可以相互學習。新手上路請多關照,如果問題還請不吝賜教。2.前置知識 位元組 位 二進位制數 計算機儲存資料使用位元組進行儲存,機器有32位,64位為乙個最小儲存單元,1個位元組為8位,那麼32位機器...