c語言求大神按位卻0卻為什麼是,C語言求大神!!! 按位取反,0取反為什麼是 1不是1?

時間 2021-12-23 07:43:55

1樓:匿名使用者

i為int型別 通常佔4個位元組

0的原碼:0000 0000 0000 0000 0000 0000 0000 0000

取反: 1111 1111 1111 1111 1111 1111 1111 1111

最高位是1所以是負數,求其原始資料,方法是

再次取反加1(符號位不變)

取反: 1000 0000 0000 0000 0000 0000 0000 0000

加1 1000 0000 0000 0000 0000 0000 0000 0001

所以是 -1

2樓:匿名使用者

0x00 ~ 0x7fffffff=> 0 ~ 21474836470x80000000 => -21474836480x80000001 => -2147483648 + 1 = -2147483647

0x80000001 => -2147483648 + 2 = -2147483646

......

0xffffffff => -2147483648 + 2147483647 = -1

c語言求大神!!~按位取反,0取反為什麼是-1不是1? 10

3樓:一顆程式猿

按位取反是指按照"二進位制位"

0 的二進位制為 0000 0000 0000 0000取反以後得到 1111 1111 1111 1111這個是-1的補碼

4樓:匿名使用者

如果0代表32位int的話,取反後就是

11111111 11111111 11111111 11111111,

上邊的二進位制如果代表有符號整數的話是-1,無符號整數的話是2^32 - 1

c語言基礎題:d1=~a的意思不就是按位取反麼?不就是把0變1,1變0麼?為啥又負數補碼還原求原碼

5樓:匿名使用者

~a表示將a按位取反,a是一個變數 , 至少要有1個位元組(char),而一個位元組有8位!

計算機中儲存的整數,都是按補碼存放的,規定:正數的補碼與原碼相同,負數的補碼為其原碼的反碼+1。 所以,當a是負數時,計算~a的結果是要求補碼的。

如:char a=7 ; (00000111)~a = 11111000

轉換成原碼為:

反碼:11111000 - 1 = 11110111原碼:10001000= -8

c語言的位運算中,~0為什麼等於-1呢?怎麼不是1呢?

6樓:

按位取反,0就是 32個抄0bit(針對int型別), 取反後是bai32個1bit即16進位制的0xffff_ffff ,而-1==0xffff_ffff,所以du0取反就是-1。。。怎麼算出來zhi很簡單,dao 計算機中資料是補碼形式儲存, -1對應的補碼是1取反+1, 1取反==0xffff_fffe, 那麼再+1就是 0xffff_ffff。。。

7樓:匿名使用者

"~" 是指位元運算.

你要0 => 1, 1=> 0, 這叫做邏輯運算, 應該用 "!"

請再多查查書, 看清楚差異.

c語言中按位取反-1怎麼算

8樓:

c語言中-1的絕對值是1,二進位制00000001,取反為11111110,-1為11111111,取反是00000000。

1、所有正整數的按位取反是其本身+1的負數;

2、所有負整數的按位取反是其本身+1的絕對值;

3、零的按位取反是-1(0在數學界既不是正數也不是負數);

0的原碼:00000000000000000000000000000000

取反:11111111111111111111111111111111

最高位是1所以是負數,求其原始資料,方法是

再次取反加1(符號位不變)

取反:10000000000000000000000000000000

加110000000000000000000000000000001

所以是-1

擴充套件資料

c語言按位與運算子(&)

按位與運算將兩個運算分量的對應位按位遵照以下規則進行計算:

0&0=0,0&1=0,1&0=0,1&1=1。

即同為1的位,結果為1,否則結果為0。

例如,設3的內部表示為

5的內部表示為

則3&5的結果為

按位與運算有兩種典型用法,一是取一個位串資訊的某幾位,如以下**擷取x的最低7位:x&0177。二是讓某變數保留某幾位,其餘位置0,如以下**讓x只保留最低6位:

x=x&077。以上用法都先要設計好一個常數,該常數只有需要的位是1,不需要的位是0。用它與指定的位串資訊按位與。

9樓:匿名使用者

-1是這樣表示的:-1的絕對值是1,二進位制0000 0001,取反為1111 1110,加1等於1111 1111,所以-1為1111 1111,這個取反當然是0000 0000

10樓:匿名使用者

-1補碼二另進位制是111111111取反為00000000

-1轉二進位制的方法,1轉二進位制,取反加1,1的二進位制是0000001,取反11111110加1為11111111

11樓:皇家小快樂

負數的反碼符號不變 其他位按位取反

12樓:怕壯

-1 的 **是 1111 1111 啊, 不要搞錯了

c語言中按位取反 1怎麼算

c語言中 1的絕對值是1,二進位制00000001,取反為11111110,1為11111111,取反是00000000。1 所有正整數的按位取反是其本身 1的負數 2 所有負整數的按位取反是其本身 1的絕對值 3 零的按位取反是 1 0在數學界既不是正數也不是負數 0的原碼 00000000000...

c語言按位運算子是什麼意思啊二進

一 位運算子 語言提供了六種位運算子 按位與 按位或 按位異或 取反 左移 右移 1.按位與運算 按位與運算子 是雙目運算子。其功能是參與運算的兩數各對應的二進位相與。只有對應的兩個二進位均為1時,結果位才為1 否則為0。參與運算的數以補碼方式出現。例如 9 5可寫算式如下 00001001 9的二...

C語言中位操作 3》31值為什麼是

右移操作時,連同符號位同時移動,且符號位是1 負數 時,補1,符號位是0 正數 時補0。char a 3 3 11111101 2事實上,右移2位後,該數為11111111,次數已經是 1了。 c語言中,假設你的機器字長一個位元組是32位,那麼你注意 3在計算機補碼中表示 1111 1111 111...