二進制補碼怎麼算?
8位二進制補碼計算步驟
數在計算機中是以二進制形式表示的。
數分為有符號數和無符號數。
原碼、反碼、補碼都是有符號定點數的表示方法。
一個有符號定點數的最高位為符號位,0是正,1是副。
以下都以8位整數為例,
原碼就是這個數本身的二進制形式。
例如
0000001 就是+1
1000001 就是-1
正數的反碼和補碼都是和原碼相同。
負數的反碼是將其原碼除符號位之外的各位求反
[-3]反=[10000011]反=11111100
負數的補碼是將其原碼除符號位之外的各位求反之後在末位再加1。
[-3]補=[10000011]補=11111101
一個數和它的補碼是可逆的。
為什麼要設立補碼呢?
第一是為了能讓計算機執行減法:
[a-b]補=a補+(-b)補
第二個原因是為了統一正0和負0
正零:00000000
負零:10000000
這兩個數其實都是0,但他們的原碼卻有不同的表示。
但是他們的補碼是一樣的,都是00000000
特別注意,如果+1之後有進位的,要一直往前進位,包括符號位!(這和反碼是不同的!)
[10000000]補
=[10000000]反+1
=11111111+1
=(1)00000000
=00000000(最高位溢出了,符號位變成了0)
有人會問
10000000這個補碼錶示的哪個數的補碼呢?
其實這是一個規定,這個數表示的是-128
所以n位補碼能表示的範圍是
-2^(n-1)到2^(n-1)-1
比n位原碼能表示的數多一個又例:
1011
原碼:01011
反碼:01011 //正數時,反碼=原碼
補碼:01011 //正數時,補碼=原碼
-1011
原碼:11011
反碼:10100 //負數時,反碼為原碼取反
補碼:10101 //負數時,補碼為原碼取反+1
0.1101
原碼:0.1101
反碼:0.1101 //正數時,反碼=原碼
補碼:0.1101 //正數時,補碼=原碼
-0.1101
原碼:1.1101
反碼:1.0010 //負數時,反碼為原碼取反
補碼:1.0011 //負數時,補碼為原碼取反+1
總結:
在計算機內,定點數有3種表示法:原碼、反碼和補碼所謂原碼就是前面所介紹的二進制定點表示法,即最高位為符號位,“0”表示正,“1”表示負,其餘位表示數值的大小。 反碼錶示法規定:正數的反碼與其原碼相同;負數的反碼是對其原碼逐位取反,但符號位除外。補碼錶示法規定:正數的補碼與其原碼相同;負數的補碼是在其反碼的末位加1。1、原碼、反碼和補碼的表示方法(1) 原碼:在數值前直接加一符號位的表示法。例如: 符號位 數值位[+7]原= 0 0000111 B[-7]原= 1 0000111 B 注意:a. 數0的原碼有兩種形式: [+0]原=00000000B [-0]原=10000000B b. 8位二進制原碼的表示範圍:-127~+1272)反碼: 正數:正數的反碼與原碼相同。 負數:負數的反碼,符號位為“1”,數值部分按位取反。例如: 符號位 數值位 [+7]反= 0 0000......
-17-19的二進制補碼運算值是多少?
看你用多少位存的數據啊,存儲數據的單元大小不同,結果可能不一樣,下按照8位沒有溢出的情況來討論一下
-17的原碼:1001 0001
反碼:1110 1110
補碼:1110 1111
減去19對計算機來說是加上-19
-19的原碼:1001 0011
反碼:1110 1100
補碼:1110 1101
然後進行計算:
1110 1111
+ 1110 1101
--------------------------
1101 1100
這個是負數補碼
反碼是:1101 1011
原碼是:1010 0100
值就是-36
二進制補碼是:1101 1100
-126的二進制補碼怎麼算
10000010
用二進制數補碼計算11-3
11轉成二進制
原碼:0 1011
補碼:0 1011
-3轉成二進制
原碼:1 0011補碼:1 1101
0 1011
1 1101
------------
0 1000(注意符號位是要參加運算的如果最高位發生進位要進到符號位參與運算)
轉成原碼
還是0 1000
轉成十進制就是8
二進制補碼運算問題我想知道怎麼計算出來
例:將-10用8位二進制補碼形式表示出來
先將10轉換成8位二進制數,等於00001010B
取反=11110101B
加1=11110110B
11110110B就是-10的補碼形式表示
絕對值的二進制取反後加1
又例:已知11111001B是補碼,求表示的是多少
因為最高位是1,則這個是個負數的補碼形式
11111001B減1=11111000B
取反=00000111B=7D
所以11111001B是-7的二進制補碼錶示
請問二進制補碼怎麼算5-4
假定用8位二進制數計算:
5-4=5+(-4),用補碼計算就是將後面的-4用補碼錶示出來然後與5相加
-4的補碼計算:取絕對值4D=00000100B,取反=11111011,加1=11111100B
00000101B-00000100B=00000101B+(-00000100B)=00000101B+11111100B=00000001B
C語言中,如何求一個數的二進制補碼?舉個例子,謝謝!
補碼是反碼加1,把實際數據轉換為2進制數據,然後把1變0,0變1,結果為反碼。再加1就是補碼。
如:10101010
反碼為:01010101
補碼為:01010110
也可以認為:從右到左第一個1為分界線,左邊按位取反,右邊(含本身)不變
二進制反碼運算是怎麼計算的
第一位是符號位,負數後面是原來數據的是源碼,按照源碼按位取反對為反碼,將反碼+1得到補碼。反碼計算可以使用兩種方法,一是換回源碼對正數計算,廠後計算符號為。二是先加一變成補碼,進行算術計算後在算回來。
二進制補碼計算溢出怎麼辦
溢出了,說明運算結果無效。
怎麼辦?
如果非得求出這個結果,那就:增加位數,再重新計算。
用二進制補碼計算15-9
假設8位計算
15的補碼 0000 1111
-9的補碼 1111 0111
二者相加得到: 0000 0110 也就是6