為什麼 C 負數以補碼的形式儲存?

發布 科技 2024-06-20
18個回答
  1. 匿名使用者2024-01-29

    計算機的硬體,只有加法器。

    負數,減法,必須通過加法來完成。

    你看一下十進位系統:

    24 + 99 = (一百) 23

    棄用攜帶,+99 可以算作 1。

    99 是 1 的補碼。

    補碼(補碼)是“代替負數運算的正數”。

    對於 2 位十進位數,查詢補碼的公式為:

    補體 負數 10 2. 在計算機中,使用二進位,這稱為補碼。

    對於 8 位二進位數,求補碼的公式:

    補體負 2 8. 1 的補碼是:1 + 256 = 255 = 1111 1111。

    2 的補碼是:2 + 256 = 254 = 1111 1110。

    128 的補碼是:128 = 1000 0000。

    尋求補充,不要使用“原始程式碼取反加一”。 這種方法無法找到 128 的補碼。

    而且,你無法理解補語的含義。 為什麼 C 負數以補碼的形式儲存?

    在補碼的幫助下,加減法統一,硬體簡化。

  2. 匿名使用者2024-01-28

    以 -1 和 +1 的相加為例。

    乙個位元組,如果是負數,它是 255,如果是正數,它是。

    因為加到256之後,它不會真正被攜帶,而是OP會被設定。 因此,在很多地方都可以忽略新增整數負數的問題。 你真的不需要區分正負,只需根據最後需要的型別處理結果即可。

  3. 匿名使用者2024-01-27

    乙個正數,它本身就是乙個補充。

    否定的,只是使用其正數,減去 1 來否定以獲得補充。

    例如,已知 9 的二進位是:0000 1001。

    讓我們找到 9 個補充:

    減一:0000 1001 - 1 = 0000 1000;

    再次:1111 0111。 所以有:9 補碼 = 1111 0111。

    這不就結束了嗎!

    這不是很容易嗎? 不感到驚訝嗎?

    原來的程式碼是反比符號的,你為什麼要討論這個垃圾? 這些垃圾是用來作弊和作弊的!

  4. 匿名使用者2024-01-26

    對於有符號數字(正號或負號),最高位是符號位。

    65 的二進位是。

    補碼運算是按位否定。

    加 1 以數字否定:1

    加 1:如果直接將其轉換為十進位,則將其視為無符號數並計數 1,因此它不是 -65。 10111111 至 -65:

    計算機根據符號位 1 確定符號為負數。

    按位否定:01000000 加 1:

    那是 65,然後是乙個負數,即 -65

  5. 匿名使用者2024-01-25

    0000 的二進位 7

    0111,是按位反,結果是 1111

    注意,最高位數是1,表示這是乙個負數,負數是計算機中的補碼,補碼是十進位,補碼負號保持不變,其他的都倒過來,最後加1,這就是原碼。 即 1000

    是 -8 公式 n

    結果,它是。 (n+1)

  6. 匿名使用者2024-01-24

    如果你不明白它的含義,你可以直接使用這個運算來求 1 +1 的補碼。

  7. 匿名使用者2024-01-23

    八位二進位 9 是 00001001 位否定11110110加上乙個11110111加號位111110111

  8. 匿名使用者2024-01-22

    計算機系統,則始終使用數值補語表示和儲存。

    在計算機中,原始碼和反向程式碼,所有這些都不存在。

    因此,要找到補體,您不必使用它們。

    補碼由一系列二進位程式碼組成。

    實用的有 8 位或 16 位。 還有一點高階的。

    每個補碼對應乙個十進位數。

    請注意,最高數字對應於負數。

    然後,八位補碼,即每個位的值,為:

    如果,有乙個補碼為:1011 1001。

    它代表數值為:128

    如果第乙個數字是 0,則為為:0011 1001。

    查詢數值甚至更簡單32 + 16 + 8 + 1 = +57。

    掌握了以上規則後,從數值中找到補碼就非常簡單了。

    例如求 125 的八位數補碼。

    是的對於負數,第乙個數字必須是 1,表示值 128。

    與 125 相比,還應該有乙個 3。

    表示 3 的七位數字是:000 0011。

    綜上所述,125 的補碼是:1000 0011。

    查詢補碼和數值是一件非常簡單的事情。

    沒有必要轉向“原始程式碼被顛倒,並且將符號新增到相同的符號中”。

    外國人,腦子不好的人,會做什麼樣的颯爽操作!

  9. 匿名使用者2024-01-21

    計算機中的負數用於便於計算,因此計算機使用補碼來儲存資料。 補碼是一種計算機編碼,便於加法運算。 例如,100(十進位) 100 16 = 6 餘數 46 16 = 0 餘數 6。

    因此,100 的十六進製數為 64h,在 8 位二進位中,正數 64h=01100100b 的補碼與原始程式碼相同。

    所以 100 的補碼仍然01100100。

    假設還有乙個十六進製數 -109109,它是 01101101-109 的原始程式碼,它是 11101101 的逆程式碼(第一位是符號位)-109,這是10010010(除符號位外,其他地方都是反轉的)。 109 的補碼是 10010011(反向程式碼加 1)。 現在計算 100-109 = 100 + (-109)。

    01100100+10010011=11110111 是 -9 的補碼。 切換到其他編碼並不像切換到其他編碼那麼簡單。

    例 1653:如果新增了原始程式碼,則存在符號位攜帶問題,依此類推。 對於計算機。 數值補碼的計算是最方便的。

  10. 匿名使用者2024-01-20

    所謂補碼,其實就是“代替負數運算”的正數。

    十進位更容易理解。

    如果合格僅使用 2 個十進位數,您可以擁有:

    24 + 99 = (一百) 23

    保留 2 位數字並放棄四捨五入,+99 等於 1。

    99 稱為 1 的補碼。

    98 是 2 的補充。

    查詢補體的公式:

    補碼 = 負數 + 10 n,n 是位數。

    計算機使用基本的二進位系統,補碼,所以它被稱為補碼。

    求補碼的公式:

    補碼 = 負數 + 2 n,n 是位數。

    在計算機中,為什麼我們需要使用補碼來表示負數?

    因為,通過使用補碼,您可以消除負數!

    然後,在計算機中,沒有減法運算。

    因此,可以簡化計算機的硬體。

    原始程式碼和反向程式碼都沒有此功能。

    所以,在計算機中,它們根本不存在。

  11. 匿名使用者2024-01-19

    譚浩強的方法適用於位數小於字長,即符號位無法覆蓋的情況。 與 -127 一樣,它只能在指定的單詞長度超過 8 位(包括符號位)時應用。 無論哪種方式都可以。

    譚浩強喜歡把簡單的事情複雜化很多,讓新手看不懂。 最直觀的理解方式是方法1,負號位為1,符號位不變,去掉符號位後的絕對值部分倒置,再加1,即為負數的補碼。

  12. 匿名使用者2024-01-18

    補碼功能類似:時針倒轉 3 小時,效果與向前撥 9 小時相同。

    然後,計算機中的負數也可以更改為正數(即補碼)。

    同時,減法運算可以用加法運算代替。

    因此,在補碼的幫助下,加法和減法是統一的,計算機的硬體可以簡化。

    十進位系統相對容易理解:

    25 + 99 = 一百) 24.

    只要你忽略攜帶,+99 代替 1。

    99 稱為 1 的補碼。

    此處使用 10 的 2 位數基數。

    查詢補體的演算法:補體 = 負數 + 10 n。

    n 是位數。

    計算機使用二進位,Complement,它更名為Complement。

    乙個位元組,即 8 位二進位。

    計數範圍為:0000 0000 1111 1111(十進位 255)。

    計數週期為:2 8 = 256。

    求補碼的演算法:負數負數 2 n 的補碼。

    然後:補碼 1 的 1 + 256 = 255 = 1111 1111。

    補碼 2 的 2 + 256 = 254 = 1111 1110。

    例如,7 2 = 5,使用如下補碼計算:

    2] 補碼 =

    得到:(1)。

    丟棄攜帶,結果恰到好處。

    在補碼的幫助下,計算機中沒有負數,因此減法轉換為加法。

    補碼的**與原始程式碼反轉無關。

    反向新增。 1.符號位也可以參與操作“,這些都沒有理論依據。

    通過對原始程式碼的反轉,已經證明“符號位可以參與操作”是錯誤的。

    補碼,它是乙個正數,根本沒有符號位。

    補碼的所有位都代表資料,當然它們都可以參與操作。

  13. 匿名使用者2024-01-17

    使用補碼,您可以將符號位與其他位統一; 同時,減法也可以通過加法來處理。 此外,當兩個由補碼表示的數字相加時,如果最高數字(符號位)具有進位數字,則丟棄進位。

  14. 匿名使用者2024-01-16

    為什麼負數用補碼表示?

    原理:通過加法運算,也可以產生減法的效果。

    目的:簡化計算機的硬體。 在兩位數以內,+99 可以代替 1。

    例如:24 1 = 23

    只取兩位數,這兩種演算法容易滑倒,功能也一樣。

    加上 99,就等於減去 1!

    聽說過嗎?

    99 是 1 的補碼。 時鐘襪子的分針和正確的表盤 59 也相當於倒退 1 分鐘!

    計算機使用二進位,因此將其重新命名為補碼。 八進位二進位:0000 0000 1111 1111(十進位 255)。

    255 (=1111 1111),這是 1 的補碼。

    254 (=1111 1110),這是 2 的補碼。

    負數的補碼是負數的 2 n。 (n 是二進位數字。 )

    在補碼的幫助下,在計算機中,僅配置了乙個加法器。

    正數,沒有補碼,只是參與計算。

  15. 匿名使用者2024-01-15

    因為乙個位元組是八位。 我們總是用最高的位來表示符號位,正數的補碼就是它本身。

    例如,如果正數為 0111、1111

    只需根據需要新增 1 即可

    不會是10111、1111嗎?

    另外,補碼由於計算機中的加減運算而表示負數,負數由補碼計算出來,盯著從青,通過補碼的加減法,得到的鄭備補碼再依次找到對應的負數,在計算機中計算的只有0和1

    數字前面不可能有加號或減號,所以負數必須補。

  16. 匿名使用者2024-01-14

    [a] 補碼 = 1111 1111 1111 1101,表示 a 是複數 2 16 - (a 的補碼)給出 -a,因為 a 是負數,-a 是正數 [補碼的優點是將兩個相反的數字相加得到 0,如 -1: 1111 1111 1111 1111 1111;1: 0000 0000 0000 0001,無非是進位,所以用 2 16]。

    a=-[2 16-(a)的補碼]得到數字的真值[這是原始大小,不包括符號位]。

    2 16 是 1 0000 0000 0000 0000,這是上面提到的進位位置。

  17. 匿名使用者2024-01-13

    對原始程式碼的補充。

    因此,原始程式碼為:((2 16-1)-a+1)。

    其中 2 16-1 是二進位數:1111 1111 1111 1111 減去 A 是所有 A(包括最高數字)的按位否定。

    在 1 之後,我們必須用 1 替換最高位置(在計算機中它替換為 1),我們在表達它時取它的負值,所以在它前面加乙個“-”

  18. 匿名使用者2024-01-12

    補碼是用於加法和減法運算。我們都知道,如果加乙個負數,只需要減去它對應的正數,比如3+(-1)=3-1=2

    計算機是愚蠢的,它沒有這種思維,他補充說是加法。

    3+(-3) 如果你用你的方式表示乙個負數,結果是 0x03+0x83=0x86 顯然不是 0,因為計算機不會將加法變成減法......

    另一種是彌補,0x03+0xfd=0x00這符合操作規則,為什麼會有補碼,-1上必須大於-2**,如果只是把第乙個位置變成1,還是不符合這個規則,0x01 0x02如果只是第乙個符號變化, 結論是0x81小於0x82這是乙個錯誤-1<-2不合邏輯...... CPU只是一台機器,沒有智商可言......

    計算機對數字的處理除了符號位0000000000一定是最小的數字,顯然以單個位元組為例,-128應該是全部0,用符號那麼1000000就是乙個小數字就是-128... 1+1 應該是 0,那麼 ff+1=0,所以 ff 是 -1...

相關回答
14個回答2024-06-20

乙個正數,它本身就是乙個補充。

否定的,只是使用其正數,減去 1 來否定以獲得補充。 >>>More

12個回答2024-06-20

求二進位負數補碼的方法是先求正數的補碼,再取倒加一; 正數不變,正數的原始碼與反碼補碼相同。 >>>More

9個回答2024-06-20

當然是程式檔案。

它是乙個單一的鉛彈簧庇護所。 >>>More

10個回答2024-06-20

總是有乙個接受陌生事物的過程。 只要你不停地在電腦上練習,多想,你就會慢慢找到樂趣。 當我第一次開始學習時,它看起來像這樣。 >>>More

9個回答2024-06-20

為什麼你的 for inside (c = string[i])=' \0'啊,感覺好曖昧 >>>More