1樓:
誰說的正數的反碼不變。通常來說,是正數沒得反碼和補碼這一說,因為正數的編碼都是原碼,也就不存在正數的反碼。將正數取反得到的結果是完全的另一個數。
數字編碼方式無論哪種編碼,都是為了代表一個數並且便於運算。我甚至可以指定00000001來代表數學上的2,00000010來代表5。我可以任意做影射關係,就像ascii碼一樣,你說憑什麼13就代表換行,10代表回車,我用5代表回車就不行?
答案是當然行,如果你夠牛,能改變標準就行。說白了就是一個影射而已,我想怎麼影射都可以,只是前人已經制定了那樣的標準,我們學習的時候,要試圖去理解,前人為什麼呀要那樣制定標準,好處是什麼。
2樓:匿名使用者
計算機內不是用原碼錶示的,它是用「補碼」表示的
正數的反碼=原碼=補碼,不等於按位取反。c語言內部的取反也不是「反碼」。反碼的定義是針對負數的,負數反碼錶示:
1,符號位為1,2。除了符號位之外按位取反等於它的相反數。可見它和c語言的取反也不一樣
3樓:我是老弋
取反不是說變成反碼。
數字在計算機裡是以補碼的形式儲存,2在計算機裡是00000010,取反就是11111101,它也是個補碼,符號位是1,所以是負數,相應的反碼是11111100,原數是10000011,就是-3了。
所以2取反就是-3了。
4樓:匿名使用者
假設2以一個位元組儲存,則其補碼為:00000010(正數的原碼和補碼是一樣的),則取反後得到11111101這麼一個補碼,將這個補碼轉換成原碼得到的結果就是-3了。轉換過程如下:
11111101--將該數減1求反碼得 11111100--除符號位外每位取反求原碼得10000011,最高位表示符號位
c語言中「~」按位取反~2的值為何是-3
5樓:匿名使用者
按位取反就是0換成1,1換成0.
2的2進位制是0000....0010,取反後就是1111....1101,就是-3.
(ffff是-1,fffe是-2,fffd是-3)
6樓:匿名使用者
2是二進位制的2 假設8位 00000010 表示2 取反後變成:11111101,這在二進位制中就是-3
c語言2的取反為什麼是-3,怎麼算的?正數的原碼反碼不是不變嗎?
7樓:神之戰戟
取反是一種運算,而你說的原碼反碼補碼是數字的表示方法,是兩個不同的概念,十進位制的2用二進位制表示原碼是0000 0010 補碼0000 0010,而對十進位制的2取反就是1111 1101 得到的補碼是1000 0011,也就是十進位制的-3,看明白了嗎???
8樓:匿名使用者
取反還要再加1
-----------------------------------------
(2)負數的補碼
符號位為1,其餘位為該數絕對值的原碼按位取反;然後整個數加1。
9樓:匿名使用者
反嗎就是按 -1 減去原數算出來的。
10樓:禽雅容苑揚
取反不是說變成反碼。
數字在計算機裡是以補碼的形式儲存,2在計算機裡是00000010,取反就是11111101,它也是個補碼,符號位是1,所以是負數,相應的反碼是11111100,原數是10000011,就是-3了。
所以2取反就是-3了。
c語言 按位取反
11樓:匿名使用者
2的二進位制: 0000 0010
-2的二進位制:1111 1110
~-2: 0000 0001
負數的二進位制表示方法:第一位符號位,然後取無符號部分取反後加1,得出負數的二進位制表示。
12樓:匿名使用者
公式:補碼 = 反碼 + 1
-2 在計算機中的補碼形式為:0xfffffffe按位取反成為:0x000000001
--------------------------------------
2 十六進位制為: 0x00000002
反碼為:0xfffffffd
反碼+1 = 0xffffffe(這就是-2)
13樓:聖鸞
a為int型別 通常佔4個位元組
2的原碼:0000 0000 0000 0000 0000 0000 0000 0010
取反: 1111 1111 1111 1111 1111 1111 1111 1101
最高位是1所以是負數,求其原始資料,方法是
再次取反加1(符號位不變)
取反: 1000 0000 0000 0000 0000 0000 0000 0010
加1 1000 0000 0000 0000 0000 0000 0000 0011
所以是 -3
14樓:匿名使用者
涉及到補碼反碼
2的原碼是00000010
那麼-2 的原碼為10000010取反得反碼11111101,末尾加1得補碼11111110
取反後就為00000001,不就是1嗎
不對,正數的原碼補碼和原碼相同,負數才按上面的方法來求
15樓:三號床鋪的四哥
按位取反運算子(~)
按位取反運算是單目運算,用來求一個位串資訊按位的反,即哪些為0的位,結果是1,而哪些為1的位,結果是0。例如, ~7的結果為0xfff8。
取反運算常用來生成與系統實現無關的常數。如要將變數x最低6位置成0,其餘位不變,可用**x = x & ~077實現。以上**與整數x用2個位元組還是用4個位元組實現無關。
當兩個長度不同的資料進行位運算時(例如long型資料與int型資料),將兩個運算分量的右端對齊進行位運算。如果短的數為正數,高位用0補滿;如果短的數為負數,高位用1補滿。如果短的為無符號整數,則高位總是用0補滿。
位運算用來對位串資訊進行運算,得到位串資訊結果。如以下**能取下整型變數k的位串資訊的最右邊為1的資訊位:((k-1)^k) & k。
移位運算
我是剛學習c語言,我想知道為什麼正數的補碼,原碼,反碼都是相同的,這是規定麼,或者是如何求的,謝謝
16樓:拐角處
原碼就是二進位制定點表示法,即最高位為符號位,「0」表示正,「1」表示負,其餘位表示數值的大小。
反碼錶示法規定:正數的反碼與其原碼相同;負數的反碼是對其原碼逐位取反,但符號位除外。
補碼錶示法規定:正數的補碼與其原碼相同;負數的補碼是在其反碼的末位加1。+7]原= 0 0000111 b
[-7]原= 1 0000111 b[+7]反= 0 0000111 b
[-7]反= 1 1111000 b
17樓:匿名使用者
隨便找本彙編的書,一般在第一章。
18樓:西知
我覺得應該是一種規定的演算法吧,拿最高位來判斷這個數是正數和負數。
如 if(最高位=0)else
19樓:劍影越林
原碼是數字轉換的二進位制數
補碼是數字對應的正數的二進位制數,也就是計算機儲存時候用的二進位制數反碼就是原碼按位求反再+1
所以正數的原碼 補碼 反碼 都相同
C語言的問題,為什麼是,C語言的問題,為什麼是
十進位制的7在ascii碼值表中對應的是bel bell 響鈴符 所以將其作為字元輸出時,進行了響鈴處理 給你一個ascii碼值表 bin dec hex 縮寫 字元 解釋 0000 0000 0 00 nul null 空字元 0000 0001 1 01 soh start of handing...
這道C語言的答案為什麼是這樣,看一道C語言程式答案,為什麼會這樣?
1 能整除形參x且不是偶數的各整數 是說求 各整數 這個 各整數 滿足兩個特徵 能整除形參x 不是偶數 這兩個特徵寫成 就是 x i 0 i 2 2 這些除數的個數通過形參n返回 是通過形參返回,而不是返回值返回。如果用return就 是函式的返回值。形參是n,兩條語句 n 0 和 n 即為將形參n...
簡單c語言求解為什麼VC中輸出結果是3和10啊
未王艮 x 是先用x 1參加運算後加1 所以b1 1 1 1 y是先加1再參加運算 額。這麼算好像不等於十 難道是編譯器的問題?好吧 這東西跟編譯器有關 3,10 3,12 說明這樣寫很危險 這是由於兩個軟體的原因,在vc 6.0裡的輸出結果應該是6和10。在vc也就是turbo c裡,把x 1作為...