按位運算子在 C 中是如何被否定的

發布 科技 2024-08-07
18個回答
  1. 匿名使用者2024-02-15

    1010 反向程式碼。

    是 0101,負數在計算機中使用補碼 -11 表示,以求補碼過程:1011 被 ->0100 加上 1->0101 否定

    即 -11 等於 10

    括號內為 0101

    補充說明:是的,1010在32位計算機中的儲存實際上是00001010的,在11110101否定之後,計算機中第一位是0表示正數,是1表示負數,即11110101代表負數,即通過11110101找到這個負數, 即求補數的倒數,步驟:先減去1得到11110100,再取反轉,當符號位不變時,得到10001011,即-11。

    如果用 4 位數字表示,您可以輸入 0101 或 8 位數字的11110101

  2. 匿名使用者2024-02-14

    A 是 int 型別。

    通常為 4 個位元組。

    原始程式碼 2: 0000

    否定:最高位數為1,所以為負數,求其原始資料,方法為。

    再次取消加 1(符號位不變)並取負數:

    加 1 所以是的。

  3. 匿名使用者2024-02-13

    bit“運算子,是謊言。

    實際上,它是根據 [字元] 計算的。

    否定是使用“1”作為“異或”運算。

  4. 匿名使用者2024-02-12

    1 表示兩者為 1,否則為 0。

    1&1=1,1&0=0,0&1=0,0&0=0,0&0=0,0&0=0 或算術:|

    0 表示兩者為 0,否則為 1

    1|1=1,1|0=1,0|1=1,0|0=0 非操作:

    1 取 0,0 取 1

    異或運算。 兩者等於 0,不等於 1

  5. 匿名使用者2024-02-11

    十六進製到二進位不需要這樣做,只需將每個十六進製轉換為 4 位二進位,所以。

    11(16) = 0001 0001(2) 0x11 此0x11是乙個整數常量。

    所以 = 0x 0011

    0xffee

  6. 匿名使用者2024-02-10

    0x11 = 0x0011 = 0000 0000 0001 0001(不需要先轉換成十進位再轉換成二進位,太麻煩了,乙個16基位可以直接轉換成四位二進位位)。

    如果你反轉它,你會得到 1111 1111 1110 1110,這是0xffee

    問題的關鍵是補位,之前的0無法儲存。

  7. 匿名使用者2024-02-09

    讓我們從 and、or、XOR 和 inverse 的布林值開始:

    和算術,兩者都是真的,計算的結果為真,反之亦然為假:

    或算術,其中至少有乙個為真,計算結果為真,反之亦然:

    異或運算,兩者的差值為真,反之為假橙色鋒面:

    1 ^ 1 = 0,1 ^ 0 = 1,0 ^ 1 = 1,0 ^ 0 = 0;丹失蹤了。

    以否定運算為例,單目運算子:

    上面的示例 1 為 true,0 為 false。

    按位算術是對二進位位的每個位執行上述計算。

    如 2 |5、轉換為二進位(以1位元組8位為例):

    00000010 |00000101,每個二進位位都是單獨執行的或算術執行的

    00000111即 7。 雖然 7 = 5 + 2,但這並不意味著 2| 5 = 2 + 5。

    如 2 | 6 = 6,5 | 6 = 7,2 | 4 | 5 | 6 | 7 = 7。

    同樣,按位和運算 2 和 5 的結果為 0:

    按位計算,運算 2 和 6 的結果是 2(二進位00000010):

    2 6 可以計算為 4(二進位00000101):

    逆運算 00000110 = 11111001。

    當然,否定乙個數字的結果也與型別是符號還是無符號、占用的位元組大小等有關。 上面的例子只是乙個位元組來說明。

  8. 匿名使用者2024-02-08

    基本會話:

    1.不懂二進位和十進位轉換的同學,請點選這裡學習。

    2.二進位中的第乙個位是符號位,0 是正數,1 是負數,例如 0000 0001 是 +1,1000 0001 是 -1。

    3.當系統計算補碼的逆數時,符號位保持不變,當符號位發生變化時,我們手動使用運算子進行反轉,這就是為什麼正數是反負數,負數是正數反比的原因。

    別看我,我是一條沒有感情的分界線

    首先確定一件事,否定就是把數字換成二進位,然後把二進位的1變成0,把0變成1。

    那麼你如何解釋,例如 10=-11?

    這要從二進位檔案的儲存方式開始。 計算機不直接儲存二進位原始碼,而是儲存二進位補碼。 正數的補碼是原碼,如1,原碼0000 0001,補碼也是0000 0001。

    負數的補碼是“符號位不變,原碼反轉再加一”(畢竟計算機不是人,它需要人為地嵌入一套完美的規則。 這種儲存方法有嚴謹的數學證明,有興趣的學生可以自己在網上查一下。 例如,-1,原始程式碼是 1000 0001,反轉是 1111 1110,111111 是 -1 的二進位補碼。

    輸出負數時,補碼反轉為原碼,原碼反加得到補碼,補碼減去一得到原碼。

    別看我,我還是一條沒有感情的分界線

    接下來,讓我們進入正題。

    十進位,數字 10

    二進位原始碼是補碼 0000 1010,直接儲存。

    10 後,原始程式碼(補碼)變為 1111 0101

    由於他的符號位是 1,系統認為這是乙個負補碼。

    輸出負數時,先將補碼減去 1 得到 1111 0100,然後反轉得到 1000 1011

    轉換為十進位時,它是 -11。

    你不覺得這很有趣嗎? 讓我們再舉乙個負數的例子。

    十進位,數字 -5

    二進位原始碼 1000 0101

    取補體(還記得負補體嗎? 符號位保持不變,原碼反轉加一) 1111 1011

    -5),即否定後的 0000 0100

    由於他的符號位為 0,因此系統假設這是乙個正補碼。

    正補碼為原始碼,最終輸出為0000 0100

    轉換為十進位是 4。

    **我和上面兩條分界線不一樣,我是情緒化的,現在我要放大***

    否定操作的簡單方法。

    也可以說是適合人工計算的計算方法:

    如果 a 被按位否定,則結果為 -(a+1)。

    此操作適用於正數、負數和零。

  9. 匿名使用者2024-02-07

    首先看等號的左邊。

    100)表示如下: 0110 0100 按位否定意味著每個位元都被否定,0 變成 1,1 變成 0,所以:

    100 的二進位表示是:1001 1011,所以等號的左邊 = 1001 1011

    再看向右邊。 101.一旦你看到乙個負數,那麼這個數字必須根據有符號數字的規則來表示。 二進位數被按位否定並加到乙個中得到它自己的負補碼,即

    x+1=-x

    所以,讓我們把 101 加到倒置加 1 的位上。 第一次否定:

    再加乙個:所以等號的右邊 = 10011011 = 左,所以等號成立。

    補充一點,計算機記憶體中的邏輯儲存位非常複雜,即使我解釋清楚,也不能保證你會完全理解它。

    一般來說,組合語言書籍會在本書的開頭詳細解釋這些知識,以便為組合語言服務,看吧。

  10. 匿名使用者2024-02-06

    077o=11000000b 沒有錯,但在計算機中,整數是用補碼表示的。 正數的補碼與原始程式碼相同,而負數的補碼由最高位數為1的負數表示,其餘低位數由負數的絕對值與1倒數表示。

    例如,-64d,如果用8位二進位補碼表示,則最高位為1表示負數,其餘7位為-64d 64d = 1000000b的絕對值,反加1為1000000,簽名位(最高位)1拼接為11000000,所以11000000表示-64d。 (字尾 o 表示八進位數,d 表示十進位數,b 表示二進位數)。

  11. 匿名使用者2024-02-05

    是的,-64,這個數字以 11000000 的形式儲存在記憶體中。 你的理解是正確的,但關鍵是你不知道負數是以補碼的形式儲存在記憶體中的。

    64 的原始程式碼是負 1000000,反碼是負0111111,補碼是反碼 +1 = 1000000,前面的負號是 1,所以是 11000000,所以這個數字是 -64

  12. 匿名使用者2024-02-04

    下面我給大家詳細解釋一下:

    12 的二進位檔案如下:00001100

    否定後:11110011這是補語的否定形式,但這是哪個否定補語?

    讓我們首先看看負數的補碼是如何表示的。 [負數的補碼是其原碼逐位否定,符號位除外; 然後在整數上加 1。 】

    讓我們回過頭來獲取它:

    先看跌 11110011-1=11110010

    然後符號在符號外被否定:10001101

    除了符號之外,還要看數字:0001101是 13,所以這個數字是 -13

    所以:12=-13

    求 -7 的補碼。 】

    由於給定的數字為負數,因此符號位為“1”。

    最後七位數字:原始程式碼 (10000111) 的 -7 按位否定 (11111000)(負號位不變)加上 1 (11111001)。

    所以 -7 的補碼是 11111001。

    知道乙個數字的補碼,有兩種方法可以找到原始程式碼

    1)如果補碼的符號位為“0”,則表示為正數,其原始程式碼為補碼。

    2)如果補碼的符號位為“1”,表示為負數,則求給定補碼的補碼為必碼。

    這是另乙個例子:找到 -64 的補碼。

  13. 匿名使用者2024-02-03

    假設整數以 16 位二進位表示,那麼。

    9 的原始程式碼是:0000000000001001

    9 的值是:1111111111110110 -- 這正好是 -10 的補碼。

  14. 匿名使用者2024-02-02

    0000 0000 0000 1001 反轉為 1111 111 111 0110,它是 0000 0000 0000 1010 的補碼。

    即 -10

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

    二進位十進位。

    >希望它有所幫助。

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

    負數按位反轉,然後 +1

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

    計算按位否定的一般方法:

    要計算的數字以二進位表示,最小二進位位數加 1(多 1 個符號位)可以表示當前數字的絕對值。 也就是說,9 表示為 01001,其中最左邊的 0 是符號位,0 是正數,1 是負數。

    否定每個二進位位,如果為 1,則結果為 0,如果不是,則結果為 1。 其結果是 :10110

    將結果視為有符號數字,將其轉換為十進位。 最左邊的數字是符號位,1 是負數。 在計算機中,負數用補碼表示,有符號數字 10110 轉換為十進位,即 -10

    一種用於計算按位否定的簡單演算法。

    將要否定的數字減去 -1 得到按位否定的結果:-1-9=-10

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

    讓我們從 and、or、XOR 和 inverse 的布林值開始:

    和算術,兩者都是真的,計算的結果為真,反之亦然為假:

    或算術,其中至少有乙個為真,計算結果為真,反之亦然:

    異或運算,兩者的差值為真,反之為假:

    以否定運算為例,單目運算子:

    上面的示例 1 為 true,0 為 false。

    按位算術是對二進位位的每個位執行上述計算。

    如 2 |5、轉換為二進位(以1位元組8位為例):

    00000010 |00000101,每個二進位位都是單獨執行的或算術執行的

    00000111即 7。 雖然 7 = 5 + 2,但這並不意味著 2| 5 = 2 + 5。

    如 2 | 6 = 6,5 | 6 = 7,2 | 4 | 5 | 6 | 7 = 7。

    同樣,按位和運算 2 和 5 的結果為 0:

    按位計算,運算 2 和 6 的結果是 2(二進位00000010):

    2 6 可以計算為 4(二進位00000101):

    逆運算 00000110 = 11111001。

    當然,否定乙個數字的結果也與型別是有符號還是無符號、占用的位元組大小等有關。 上面的例子只是乙個位元組來說明。

相關回答
18個回答2024-08-07

用劉輝的“包皮環切術”公式,我計算了圓周率—— >>>More

19個回答2024-08-07

:的優先順序高於 =

低於<< >>>More

5個回答2024-08-07

n |= 1 相當於 n = n | 1

運營商 |它是按位或算術的,你可以先把兩個運算元寫成二進位,然後再看它們,例如二進位數。 >>>More

12個回答2024-08-07

>運算子(C 引用)。

Shift Right 運算子 (> 將第乙個運算元向右移動第二個運算元指定的位數。 >>>More

7個回答2024-08-07

+ 遵循正確的繫結規則;

a=++i++;等價於 int temp=i++, a=++temp; >>>More