在c語言中,負數向右移動1位也算是除以2嗎

2021-03-03 20:39:16 字數 3382 閱讀 5253

1樓:聽不清啊

在c語言中,負的偶數向右移動1位也是除以2,負的奇數向右移動1位等於此數除以2,再減1。

2樓:

正數向右移動會小於原數,可能是負數並且帶126這三數字

c語言中的右移一位是不是應該除以2?

3樓:匿名使用者

不是c語言的有符號整數向右移位運算不等同於除以2的某次冪如(-1)/2和(-1)>>1,前者的結果一般是0,後者一般是-1,所以在c語言中,負數向右移動1位並不等同於除以2。

解決的方法是:當除數是2的n次冪時,x/(2^n),可以用移位操作(x + 2^n - 1) >> n來代替(x + 2^n - 1須小於0,^是乘方操作)

在c語言中,-100/8=-12,而-100>>3=-13,兩者不相等,而用(-100+7)>>3代替則相等。

c語言中負數除以10和正數除以10一樣嗎

4樓:匿名使用者

首先程式語言也是為了人類服務的,那麼負數除以10和正數除以10的結果肯定是不一樣的

然後資料是以二進位制在計算機中儲存的。然而,計算機並沒有單獨儲存負數的機制,所以負數都是用補碼的形式儲存的。除法的具體計算過程可以參考計算機組成原理裡面除法的計算過程

5樓:加菲貓與美人魚

跟數學一樣的,負數肯定多個負號

c語言關係運算中負數是按0還是按1

6樓:篤學博志

1、關係運算子中是判斷邏輯,而不是正負;

2、邏輯只有真假,是0即假,非0即真;

3、按你所說負數當然是真咯!

如果滿意,請採納!

7樓:

關係運算中之區分零和非零,負數是非零

8樓:尼嗎還有

非零即為真,所以負數也是真,為1

9樓:乜懋任玉蘭

0001

取反1110

符號位為1,取反+1為

1010

轉化成10進製為

-2正數的原碼,補碼,反碼都版相同,都等於它本身負數的補權碼是:符號位為1,其餘各位求反,末位加1反碼是:符號位為1,其餘各位求反,但末位不加1也就是說,反碼末位加上1就是補碼

1100110011原

1011001100反除符號位,按位取反

1011001101補除符號位,按位取反再加1正數的原反補是一樣的

在計算機中,資料是以補碼的形式儲存的:

在n位的機器數中,最高位為符號位,該位為零表示為正,為1表示為負;

其餘n-1位為數值位,各位的值可為0或1。

當真值為正時:原碼、反碼、補碼數值位完全相同;

當真值為負時:

原碼的數值位保持原樣,

反碼的數值位是原碼數值位的各位取反,

補碼則是反碼的最低位加一。

注意符號位不變。

如:若機器數是16位:

十進位制數17的原碼、反碼與補碼均為:0000000000010001十進位制數-17的原碼、反碼與補碼分別為:1000000000010001、1111111111101110、1111111111101111

在c語言中怎麼表示負數。

10樓:陌上花開

值|第一位符號位1為負,0為正。 正數的補碼和2進位制原碼是一樣的。

負數的補碼:

1、先取絕對值|x| ;

2、對|x|+1 ;

3、對|x|+1 取反,就得到它的補碼了 。

計算機中存放整型資料都是按補碼的形式存放的。

擴充套件資料:有符號數的表示方法是由硬體決定,而不是由c決定的。有三種表示方法:

1、二進位制原碼

0000 0001 表示 1

1000 0001 表示 -1

這個方法有個缺點是有兩個零: +0 和 -0。這會引起混淆,而且用兩個位組合來表示一個值也有些浪費。

2、二進位制補碼(最普遍的系統)

區別在於 singned 和 unsigned:

1)如果是無符號位元組, 1000 0000 該組合為 1282)如果是有符號位元組, 1000 0000 該組合為 -128第一種表示數的範圍是 0 ~ 255;

第二種表示數的範圍是 -128 ~ +127,對於一個二進位制補碼數取負數,最簡單的方法就是取反、加 1。

3、二進位制反碼

通過反轉位組合中的每一位以形成一個數的負數,例如:

0000 0001 表示 1

1111 1110 表示 -1

這種方式也有一個 -0:1111 1111。其範圍是 -127 ~ +127。

11樓:兮汐

1.負數在現代計算機裡一般用補碼錶示,為什麼呢?原因是:保證0的左右不矛盾

1是0001,推算出0是0000;

-1的是1111,推算出0也是0000。

如果直接用反碼(0變成1,1變成0)那麼0就會有兩個結果。

如果用第一位表示符號,後三位表示大小,那麼就有空間浪費。

2.char型別是8位,1000 0000還原為原碼:

最高位是1,表示負數,剩餘的各位取反 111 1111 再+1 得到 1000 0000, +128的原碼,整個數為-128

求採納為滿意回答。

12樓:

就直接寫啊,

舉個例子啊:

int a = 19;

int b = 0-a; 這裡b就是負數了,0-19就是 -19了。

13樓:

直接在變數b前面加-(負號)即可。

設b=5

那麼int a=-b 此時a=-5

再比如設b=-5

int a=-b 此a=5 因為它相當於int a=-(-5) 即負負得正。

14樓:d靈心

定義有符號變數 在賦值的時候前面加一個負號就行

15樓:溫暖流過時光

資料型別是有符號型別,負數就和數學裡的負數一樣。int 的取值範圍是-32768~32767,只要不越界就行

16樓:w水木清華

定義該數為浮點型,並在前面加符號即可!

17樓:匿名使用者

#include

#include

int main(void)

-b 直接寫成這樣就是了。

18樓:匿名使用者

直接乘-1就可以。b*(-1)

在c語言中,在C語言中ch c A a 是什麼意思,其中ch和c是字元

在c語言中ch c a a 的意思是,是把表示大寫字母的變數c轉換為小寫字母的語句,使用前一般要先判斷一下的,如下 if c a c z ch c a a 因為當c b 時,c a 就等於1,然後1 a 就是 b 如果事先不檢測的話,當c不是大寫字母時作這樣的轉換是會無法理解的。在c語言中ch c ...

在c語言中103並且說明,c語言中1033為什麼等於

0.333333333333333 我敲bai了15個3 c語言中除法運算有du兩種,整除zhi和實dao除,都是用除號 兩邊都是整數那就專是整除,可以理解為除屬完以後舍掉小數位取整 舍掉的,沒忘記 吧?這貨要求也是兩邊參與運算得數都得是整數 那麼什麼時候實除還用說嗎?c語言,實數預設為double...

在c語言中 char chch getchar 表示什

getchar 函式的作用是從計bai算機終端 一般du為鍵zhi盤 輸入 一個dao字元。版getchar 函式只能接收一個字元,其函式值就是從輸權入裝置得到的字元。舉個例子,用法如下 include void main char ch ch getchar 意思是將變數baich定義du為cha...