A. 關於c語言的補碼
8bit(位)是一個Byte(位元組).
2Byte(位元組)是一個Word(字),16bit.
2Word(字)是一個DW(雙字),32bit.
---------------------------------
二進制的每一個都有自己的權值。對於一個位元組來講,從左至右分別為128、64、32、16、8、4、2、1(發現規律了吧——乘2)
因為19=16+2+1,所以從右至左,第0位為1,第1位為1,第4位為1。
就得到了10011b
所以,如果用8位表示19當然就是00010011b
用16位表示就是0000000000010011b
用32位表示就是
--------------------------------------------------
至於你說的補碼的問題,是因為在計算機中,為了存貯負數(要與正數和0分開,不能重碼)而做的人為規定。
總之,你記住,計算機里存貯數都是用補碼的形式。正數和0的補碼永遠都是自己,負數的補碼就是它的絕對值按位取反,加1。
[0]補=00000000b
[1]補=00000001b
[2]補=00000010b
[3]補=00000011b
----------------
[-0]補=00000000b
[-1]補=11111111b(註:-1的絕對值為1,按位取反後為11111110b,加1就得到了-1的補碼:11111111b)
[-2]補=11111110b
[-3]補=11111101b
B. 在C語言中,整數的數值是以補碼形式存放的,補碼是什麼意思啊
使用補碼代表負數,就可以把減法,轉化為加法運算。
那麼,在計算機中只要有一個加法器,就可以做加、減法了。
使用補碼的意義,就是簡化了計算機的硬體。
常識:時鍾倒撥 3 小時,可以用正撥 9 小時代替。
怎麼計算,自己推導吧。
--------
兩位十進制數,共有 100 個數字:00~99。
那麼,減一,就可以用 +99 代替:
25-1 = 24
25 + 99 = (1) 24
取後兩位,忽略進位 100,結果,不就是相同的嗎?
只要利用一個「較大的正數」代替負數,就能把減法變加法了。
這個較大的正數,就是負數的補數。
計算公式:-1 的補數=100-1 = 99。
-2 的補數=100-2 = 98。
。。。
--------
計算機中,使用的是二進制。
二進制的補數,就改稱為:補碼。
八位二進制數,共有 256 個數字:0000 0000~1111 1111。
那麼,-1 的補碼就是 1111 1111 = 255(十進制)。
同理,-2 的補碼就是 1111 1110 = 254(十進制)。
。。。
最後,-128的補碼就是 1000 0000 = 128(十進制)。
計算公式:負數的補碼=【256+這個負數】
零和正數,不需要求補數(補碼),直接計算即可。
C. c語言中原碼,補碼分別是什麼意思
原碼就是原來數字的二進制的表示 比如 15= 1110 這個是15的原碼 他的補碼就是0001
D. 在C語言中補碼什麼意思
補碼主要是為了cpu運算器在進行減法運算時避免借位而設立的。
在早期,cpu中的運算器部分,只要實現一個加法器就可以完成四由算術運算。
因為計算機中的數值編碼是有限位數的,所以減法實際上相當於加上減數的補碼,而乘法是循環的加法,除法是循環的減法。這種思想在數學上叫轉化思想,在兵法上與」借刀殺人「、」借屍還魂「的借是「異曲同工」,用牛頓的話叫做「站在巨人的肩上「。
舉例說明,以8位的二進制為例,要計算1-1,只要用1加上-1的補碼即可。
-1的原碼:1000 0001,最高位是符號為,1表示負數,0表示正數。
-1的反碼:1111 1110, 按位取反是除符號位以外,其它每個位上的0變成1,1變成0。
-1的補碼:1111 1111,在反碼的基礎上是加上1即為補碼。
1-1 = 1+ 1111 1111 = 1 0000 0000 ,因為只有8位的二進製表示方法,此時溢出了,溢出位在硬體上是沒法表示的,因此結果還是0.
E. C語言里的補碼是什麼意思多舉幾個例子來解釋.
補碼,是在計算機內部,正負數的存放格式。
C 語言是高級語言。
用高級語言編程,是不用關心計算機內部的事的。
如果非要涉及計算機內部的細節,那就不是高級語言了。
很多教材書籍的作者,都沒有弄明白:什麼是高級語言。
計算機內部的碼,有很多種了,要是討論起來,C 語言就學不完了。
F. C語言補碼作用
用16bit表示,三個碼分別是:原碼、反碼、補碼
-0:
1000
0000
0000
0000、1111
1111
1111
1111、0000
0000
0000
0000
-6875:
1001
1010
1101
1011、1110
0101
0010
0100、1110
0101
0010
0101
-11:
1000
0000
0000
1011、1111
1111
1111
0100、1111
1111
1111
0101
如果是8位,:原碼、反碼、補碼分別為:
-0:
1000
0000、1111
1111、0000
0000
-11:
1000
1011、1111
0100、1111
0101
6875
無法表示,因為8位的最大表大范圍是-128
~
127
正數:原碼=補碼
負數:
原碼
=
正數部分(去掉負號)的二進制值,且符號位(最左邊的比特位)為1
反碼
=
正數部分(去掉負號)的二進制值,按位取反
補碼
=
反碼
+
1
G. C語言中為什麼用補碼表示負數,而不是直接在正數的前面加1呢
為什麼用補碼表示負數?
原理:用加法運算,也可以產生減法的效果。
目的:簡化計算機的硬體。
在兩位數之內,+99,就可以代替-1。
如:24 - 1 = 23
24 + 99 = (1) 23
只取兩位,這兩種演算法,功能就是相同的。
加上 99,就相當於,減一!
物極必反,聽說過吧?
99,就是-1 的補數。
-------------------
鍾表的分針,正撥 59,也相當於倒撥 1 分鍾!
-------------------
計算機用二進制,就改稱為:補碼。
八位二進制:0000 0000~1111 1111(十進制255)。
255(=1111 1111),就是-1 的補碼。
254(=1111 1110),就是-2 的補碼。
。。。
負數的補碼 = 2^n + 該負數。(n 是二進制的位數。)
藉助於補碼,在計算機中,只需配置一個加法器,即可。
正數,沒有補碼,直接參加計算即可。
H. C語言中的原、反、補碼
c語言中,所有的整型數據實際存儲的都是補碼。要計算補碼,先要知道原碼的概念,原碼也就是一個10進制數的二進製表達方式,比如100的原碼為1100100。補碼的計算原則為:1對於無符號數以及有符號數中的正數,其補碼就是原碼本身;2對於有符號數中的負數,其補碼為真值絕對值的反碼加一,其中反碼為原碼按位取反。針對負數舉例說明:-100在用char型(8位)表示時,其補碼可以按照如下流程計算。1、100的原碼為011001002、按位取反,得到反碼為100110113、將反碼加1,即10011011+1=10011100。於是-100的補碼表示就是10011100,也就是0x9c(16進制)。