C語言如何進行補碼運算並舉例說明

2021-10-08 07:10:23 字數 622 閱讀 4438

計算機為了節省資源通常把減法當作加法運算,例如 90-100 當成90+(-100)。

為了實現這個功能,計算機進行補碼運算。

1、正數的補碼是原始碼不變,例如:

5 原始碼 00000101

補碼 00000101

2、負數的補碼是原始碼的符號位不變,其餘為取反再加1得到,例如:

-6 原始碼 10000110

符號位不變其餘取反 11111001

再加1得到補碼:11111010

那麼現在進行加法操作:5-6 等同於 5+(-6)

補碼運算:00000101 + 11111010 = 11111111 現在得到補碼的計算結果,可以看到符號位為1,那麼結果是負的,負的就要進行反補碼再加1,那麼得到數字10000000,再加1等於10000001 = -1,那麼結果出來了,等於-1

那麼現在進行加法操作:5-4 等同於 5+(-4)

補碼運算:00000101 +11111100 =100000001 可以看到 得到乙個9位數的2進製**,那麼多餘的一位數最高位去掉得到8位為:00000001 = 1

可以得到結論:如果結果為正數那麼不需要進行補碼運算的逆運算。如果結果為負數,那麼需要進行補碼運算的逆運算。

Linux下面如何進行C語言程式設計

1.源程式的編譯 在linux下面,如果要編譯乙個c語言源程式,我們要使用gnu的gcc編譯器.下面我們以乙個例項來說明如何使用gcc編譯器.假設我們有下面乙個非常簡單的源程式 hello.c int main int argc,char argv 要編譯這個程式,我們只要在命令列下執行 gcc o...

C 如何進行多執行緒程式設計

由於多執行緒程式設計非常複雜,這個小例子只能算是乙個入門線的知識點吧 首先建乙個應用程式專案,命名為threadexample,在窗體上放乙個文字框 textbox1 乙個標籤 lblresult 再放兩個按鈕,分別命名為btnstart btnstop。窗體 namespace threadexa...

c語言的原碼補碼反碼 位運算

有無unsigned 的區別 資料在計算機上儲存是2進製的 第一位是符號位 其餘是資料位 unsigned 是無符號的意思 沒有符號位 全都是資料位 比如unsigned int int 佔4位元組8位在記憶體中 0000 0000 0000 0000 0000 0000 0000 0000 int...