关于补码计算
首先,叫你计算补码,最好的方式不是将这个16进制的数转换为10进制,而是将其转换为2进制。
回到这个题目,正确的想法应该是FFFF(H)=1111,1111,1111,1111(B),也就是将其转换为2进制考虑问题。
这个2进制数的补码首位是1,说明这个数是个负数。(首位是0是非负数,首位是1则是负数)
你再看看补码的定义,正数补码是它本身,负数补码就是其反码+1。
那回到原题,这个数的反码就是:1111,1111,1111,1111(B)-1=1111,1111,1111,1110(B)。
根据反码定义,你不难得出数的原码是1000,0000,0000,0001(B)=-1。
(首位符号位不变,其它位取反)
同样的方法,根据原码,反码,补码的定义,你也可以计算-128的补码。但是你没说要求的是多少位补码,我当求8位补码来考虑了。
第一步:转换为2进制:-128转化为8位二进制数为1111,1111(B)
第二步:求其反码:1000,0000(B)
第三步:求补码:就是反码+1=1000,0001(B)=-1
若是求16位补码:则同理:其2进制补码为1111,1111,1000,0001(B),我就不转换10进制了,有需要可以用windows自带的计算器,用“科学型”进行进制转换。
这种题目,对于刚学习的来说,不能急,关键看定义,通过定义来计算。定义都是用2进制来考虑的,你为什么要想换成10进制去算?对吧?
你确实错了:
-60=11000100
53=00110101
11000100+00110101=11111001
正数的补码 与原码相同。
负数的补码 符号位为1,其余位为该数绝对值的原码按位取反;然后整个数加1。
所以:-60的 最高位 为1,其余七位 为60的源码0111100取反后1000011加1为1000100 总起来就是11000100
其结果11111001,其中最高位为1,说明为负数,
其余七位1111001减1为1111000,然后取反为0000111,转换为十进制为7
总起来就是-7
最高位只是一个符号位,1就是负数,0就是正数,参与计算,但是不参与取值
关于补码问题 还有考虑宽度,例如 是按照字节来计算就是8个位,c语言中的char类型就是这种,最大取值为127到-128 ,
如果是 无符号类型,unsigned char ,那么最高位 不在代表符号,而参与取值 即0到255,没有负数。
当然c语言中的int 是32位的,原理同上。
你只所以错了,是因为混淆了 反码
例如
原码:
7的原码是0 0000111
-7的原码是1 0000111
可见原码无法进行加法计算
反码:
正数:正数的反码与原码相同。
负数:负数的反码,符号位为“1”,数值部分按位取反。
+7= 0 0000111
-7= 1 1111000
补码:
正数:正数的补码和原码相同。
负数:负数的补码则是符号位为“1”,数值部分按位取反后再在末位(最低位)加1。也就是“反码+1”。
+7= 0 0000111
-7= 1 1111001
a. 采用补码后,可以方便地将减法运算转化成加法运算,运算过程得到简化。正数的补码即是它所表示的数的真值,而负数的补码的数值部份却不是它所表示的数的真值。采用补码进行运算,所得结果仍为补码。
9bH 换成16进制是1001 1100(H代表达16进制)
这个可以换成十进制再进行/4运算。。。
(128+16+8+4)/4=156/4=39
再把39换算成十六进制为0010 0111
最后最反就可以了。。。。
先把9BH换成十进制912除以4等于213再换成二进制,正数的补码与原码相同
怎么算补码?
补码的算法如下:一、补码加法[X+Y]补 = [X]补 + [Y]补例:X=+0110011,Y=-0101001,求[X+Y]补[X]补=00110011 [Y]补=11010111[X+Y]补 = [X]补 + [Y]补 = 00110011+11010111=00001010注:因为计算机中运算器的位长是固定的,上述运算中产生的最高位进位将丢掉,所以结果不是10000101...
计算机利用补码进行计算
正数的原码、反码、补码都相同 ,所以:35 的补码为 00100011 负数求补码 : 符号位为1,其余位为该数绝对值的原码按位取反;然后整个数加1。可得 -37的补码: 1101 1011 执行计算 负数由补码求原码 : 符号位为1,其余各位取反,然后再整个数加1 。由原码可以转换为十进制。
由补码来计算原码的计算方法是怎样的?
由补码来计算原码的计算方法就是再对补码求一次补码,也就是补码的补码等于原码。下面根据该问题来解释由补码求原码的过程:补码:1110 0000 补码的反码:1001 1111 (最高位为符号位,求反码时,符号位不变,其余各位取反)补码的补码:1010 0000 (补码为再反码的基础上进行加1操作)所以1110 00...
补码是如何计算的?
算法1:补码=原码取反再加1的逆运算。10010110是补码,应先减去1变为反码,得10010101;由反码取得源码即除符号位外其他为按位取反,得11101010,即十进制数的-106。算法2:负数补码速算法,由最低位(右)向高位(左)查找到第一个1与符号位之间的所有数字按位取反的逆运算 10010110是补码,符号位与...
原码补码反码怎么计算?
1、原码符号位1不变,整数的每一位二进制数位求反,得到反码。2、反码符号位1不变,反码数值位最低位加1,得到补码。方法:(1)正整数的原码,反码和补码计算。【符号位为0,原码=反码=补码】(2)负整数的原码,反码和补码计算,先求原码,再求反码,最后求补码。(3)根据补码求真值,一般...
什么是补码,其补码如何计算
补码为最高位置1,其余取反也就是11110110,然后在最低位加1即可即11110111。计算机中的负数是以其补码形式存在的补码=原码取反+1。一个字节有8位可以表示的数值范围在-128到+127。用二进制表示也就是10000000-01111111(注意:最高位表示符号)。最高位是1的都是负数最高位是0的都是正数。
二进制运算为什么要用补码进行运算?
补码的功能,类似于:时针倒拨 3 小时,与正拨 9 小时,效果相同。利用这种思路,计算机中的负数,也可以改为正数(即补码)。同时,减法运算,也就可以用加法运算代替了。那么,借助于补码,就能统一加减法,够简化计算机的硬件。十进制比较容易理解:25 - 1 = 24 25 + 99 = (一百) 24。只要...
补码怎么算?
补码是这样计算的:首位为符号位。符号位为0表示正数,正数的补码=原码=反码。符号位为1表示负数,负数的补码等于将符号位后面的位全部取反再加1。另外,一个数的补码的补码等于这个数的原码,所以如果已知一个数的补码,那么对这个补码求一次补码即可得到这个数的原码。前面已经说了,负数的补码等于...
不是通过补码来实现加减法的吗
通过补码实现加减运算,这是肯定的。例如,通过补码计算 19 -23 [+19]补 = 00010011b [-23]补 = 11101001b (+ --- [19-23]补=11111100b [19-23]反=11111011b [19-23]原=10000100b 结果19-23 = -0000100b = -4d,(b是二进制数后缀,d是十进制数后缀)
原码反码补码计算口诀
一:原码,反码,补码与加减乘除运算 1:原码,反码与补码 正数的原码,反码,补码都一至.负数原码为绝对值二进制最高位取1, 负数的反码是原码(符号位除外)按位取反, 负数补码是反码+1如9的原码,反码,补码都是 00000000 00000000 00000000 00001001-9 原码 10000000 00000000 00000000 00001001-9的反码 ...
姓削溃疡:[答案] 9-12就是9+(-12) 9的补码:0000 1001 -12的补码:11110100 相加得:11111101 然后再将此看做原码再求一次补 得:10000011 即 -3 完毕
海南省17291408292: 补码的基本运算用二进制的补码运算求 - 54 - 30请把过程写清楚一点,先谢谢了 - ?
姓削溃疡:[答案] 1.(1)正数的补码:与原码相同. 【例1】+9的补码是00001001. (2)负数的补码:符号位为1,其余位为该数绝对值的原码按位取反;然后整个数加1. 【例2】求-7的补码. 因为给定数是负数,则符号位为“1”. 后七位:+7的原码(0000111)...
海南省17291408292: 在计算机上补码的减法通常是怎么计算的 - ?
姓削溃疡:[答案] 准确的说,计算机上只有加法,没有减法,不过有负数计算机算A-B,先得出A和-B的补码,然后把补码加起来,然后再得到原码,这个原码就是A-B的值正数的补码是其本身,负数的补码是符号位(也就是二进制的首位)不变,其他位取反,然后+1
海南省17291408292: 求详解 补码,补码运算 例如:9的补码为什么是00001001 ,如果是109它的补码是多少 再有补码运算 怎么算 ,请多举例说明 本人眼拙 脑笨 , - ?
姓削溃疡:[答案] 求解补码的步骤:(1) 求解二进制格式,得原码;(2) 如果为正数,补码=原码,如果是负数,继续下一步;(3) 除符号位外,各位取反;(4) 最低位加1,最终得到负数的补码.假设机器字长为8(一个数的二进制格式共有8位).以9为例,...
海南省17291408292: 补码如何运算我是菜菜详细点···· - ?
姓削溃疡:[答案] 求补码运算要有区别的:1 对于正数其原码=补码2 对于负数写出其原码来,然后按位取反(符号位除外,符号位为最高位),然后加1,即可.比如 对于32位字的 -8其原码 1000 0000 0000 0000 0000 0000 0000 1000取反 1111 111...
海南省17291408292: 整数减少小数,补码怎么运算,比如2 - 3.25 用补码方式怎么计算 我想问的是补码的计算方式,二进制的计算方式同学们,我知道补码(反码加1)你们就回答... - ?
姓削溃疡:[答案] -1的补码是当整数计算.若是16位二进制数.则:(-1)补码=1111111111111111 -1的补码是当整数计算.若是16位二进制数.则:(-1)补码=
海南省17291408292: 十进制数补码怎么算假定一个数在机器中占用8位,十进制数 - 4的补码是 - ?
姓削溃疡:[答案] 负数的补码:符号位为1,其余位为该数绝对值的原码按位取反;然后整个数加1. 十进制数-4的补码为: 1 1111 100
海南省17291408292: 补码怎么算啊,能说一下吗 - ?
姓削溃疡: 正数的原码补码反码都是一样的, 直接转到二进制就可以…… 负数的补码要通过原码到反码再加1可以得到…… 但是这样去理解我感觉很抽象 我是这样算的 要算-127的话 由-127+127=001111111(127) +10000001 =00000000 …… 毕竟补码是要用的,不知道这么用,为什么要算它……
海南省17291408292: 二进制补码运算二进制的补码运算下列式子,最高位是符号位 9+( - 7)=? - ?
姓削溃疡:[答案] 数据在内存中以补码形式存储,运算也以补码形式运算,运算结果也是补码. 最高位是符号位,正数时是0,负数时是1.以int类型2字节,16位二进制来算. 9(正数),补码=原码,即 00000000 00001001 -7(负数),补码 = (256 - 负数绝对值,注...
海南省17291408292: 整数减少小数,补码怎么运算,比如2 - 3.25 用补码方式怎么计算呢我想问的是补码的计算方式,二进制的计算方式 - ?
姓削溃疡:[答案] 00000010-[00000011.01000000]补 ==00000010+[-00000011.01000000]补 ==00000010+11111101.11000000 ==11111111.11000000 ==-[-11111111.11000000]补 ==-00000001.01000000 ==[-1.25]十进制. 建议看好组成原理,补码的运算其实很简单.