百度
360搜索
搜狗搜索

求补码计算器,原码反码补码详细概述详细介绍

本文目录一览: -64的原码、反码、补码各是多少

-64,有符号数,第一位为符号位所以,
原码:
11000000,二进制1000000转换成10进制为64
反码:
正数的反码与原码相同,负数的反码,符号位不变,其余各位按位取反,所以反码为:
10111111
补码:
正数的补码与原码相同,负数的补码,符号位不变,其余各位按位取反再加1,所以反码为:
10111111+1=11000000
计算机里,负数的是以补码形式存放的,WIN7以上的系统自带的计算器就可以查看负数的补码。打开计算器,切换到程序员模式,然后输入-64,可以看到下面的补码,如图:
注意红框里面的数字即是-64的补码,如果是负数,前面的所有位数都是1

怎么利用电脑的计算器就-1的二进制补码?

1、选择二进制
2、选择单字
3、输入1(数字键1)
4、输入-(+/-键)
5、输入=(数字键=)

计算机中的补码怎么求

1、正数的补码表示:
正数的补码 = 原码
负数的补码 = {原码符号位不变} + {数值位按位取反后+1} or
= {原码符号位不变} + {数值位从右边数第一个1及其右边的0保持不变,左边安位取反}
以十进制整数+97和-97为例:
+97原码 = 0110_0001b
+97补码 = 0110_0001b
-97原码 = 1110_0001b
-97补码 = 1001_1111b
2、纯小数的原码:
纯小数的原码如何得到呢?方法有很多,在这里提供一种较为便于笔算的方法。
以0.64为例,通过查阅可知其原码为0.1010_0011_1101_0111b。
操作方法:
将0.64 * 2^n 得到X,其中n为预保留的小数点后位数(即认为n为小数之后的小数不重要),X为乘法结果的整数部分。
此处将n取16,得
X = 41943d = 1010_0011_1101_0111b
即0.64的二进制表示在左移了16位后为1010_0011_1101_0111b,因此可以认为0.64d = 0.1010_0011_1101_0111b 与查询结果一致。
再实验n取12,得
X = 2621d = 1010_0011_1101b 即 0.64d = 0.1010_0011_1101b,在忽略12位小数之后的位数情况下,计算结果相同。
3、纯小数的补码:
纯小数的补码遵循的规则是:在得到小数的源码后,小数点前1位表示符号,从最低(右)位起,找到第一个“1”照写,之后“见1写0,见0写1”。
以-0.64为例,其原码为1.1010_0011_1101_0111b
则补码为:1.0101_1100_0010_1001b
当然在硬件语言如verilog中二进制表示时不可能带有小数点(事实上不知道哪里可以带小数点)。
4、一般带小数的补码
一般来说这种情况下先转为整数运算比较方便
-97.64为例,经查询其原码为1110_0001.1010_0011_1101_0111b
笔算过程:
-97.64 * 2^16 = -6398935 = 1110_0001_1010_0011_1101_0111b,其中小数点在右数第16位,与查询结果一致。
则其补码为1001_1110_0101_1100_0010_1001b,在此采用 负数的补码 = {原码符号位不变} + {数值位按位取反后+1} 方法
5、补码得到原码:
方法:符号位不动,幅度值取反+1 or符号位不动,幅度值-1取反
-97.64补码 = 1001_1110(.)0101_1100_0010_1001b
取反 = 1110_0001(.)1010_0011_1101_0110b
+1 = 1110_0001(.)1010_0011_1101_0111b 与查询结果一致
6、补码的拓展:
在运算时必要时要对二进制补码进行数位拓展,此时应将符号位向前拓展。
-5补码 = 4'b1011 = 6'b11_1011
ps.原码的拓展是将符号位提到最前面,然后在拓展位上部0.
-5原码 = 4‘b’1101 = 6'b10_0101,对其求补码得6'b11_1011,与上文一致。
扩展资料:
计算机中的符号数有三种表示方法,即原码、反码和补码。三种表示方法均有符号位和数值位两部分,符号位都是用0表示“正”,用1表示“负”,而数值位,三种表示方法各不相同。
在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理。此外,补码与原码相互转换,其运算过程是相同的,不需要额外的硬件电路。

计算机原码反码补码怎样计算

计算机中,只有补码,没有原码和反码。
数字,在计算机中,一律用补码表示。
数字与补码的关系,可见下表:
换算公式,很简单的,一看便知。
原码反码取反加一,实际上,都没有什么用处。
老外数学不好,才不得不用这么麻烦的做法。
计算机原码反码补码计算方法:
1、原码
原码就是符号位加上真值的绝对值,即用第一位表示符号,其余位表示值。比如如果是8位二进制:
[+1]原 = 0000 0001
[-1]原 = 1000 0001
第一位是符号位. 因为第一位是符号位, 所以8位二进制数的取值范围就是:[1111 1111 , 0111 1111]
即[-127 , 127]
原码是人脑最容易理解和计算的表示方式。
2、反码
反码的表示方法是:正数的反码是其本身。负数的反码是在其原码的基础上, 符号位不变,其余各个位取反。
[+1] = [00000001]原 = [00000001]反
[-1] = [10000001]原 = [11111110]反
可见如果一个反码表示的是负数,人脑无法直观地看出来它的数值。通常要将其转换成原码再计算。
3、补码
补码的表示方法是:正数的补码就是其本身。负数的补码是在其原码的基础上,符号位不变,其余各位取反,最后+1。(即在反码的基础上+1)。
[+1] = [00000001]原 = [00000001]反 = [00000001]补
[-1] = [10000001]原 = [11111110]反 = [11111111]补
对于负数,补码表示方式也是人脑无法直观看出其数值的。通常也需要转换成原码在计算其数值。
扩展资料:
原码,反码和补码是完全不同的。既然原码才是被人脑直接识别并用于计算表示方式,为何还会有反码和补码呢?
首先,因为人脑可以知道第一位是符号位,在计算的时候我们会根据符号位,选择对真值区域的加减。但是对于计算机,加减乘数已经是最基础的运算,要设计的尽量简单。计算机辨别"符号位"显然会让计算机的基础电路设计变得十分复杂。于是人们想出了将符号位也参与运算的方法。我们知道,根据运算法则减去一个正数等于加上一个负数,即: 1-1 = 1 + (-1) = 0 , 所以机器可以只有加法而没有减法,这样计算机运算的设计就更简单了。
于是人们开始探索将符号位参与运算,并且只保留加法的方法。

急~!急~!急~!假定一个数在机器中占用8位,则-23的补码、反码、原码依次为?

这些东西大多数都可以用计算机自带的计算器算的··步骤如下:
开始--程序--附件--计算器
再点计算器的查看命令··把计算器类型改为科学型就行了···
其余的就是你自己慢慢的输了··
嘿嘿··给我点分么···
-23的原码:1,10111 反码:1,01000 补码:1,01001
-23的原码:1,10111 反码:1,01000 补码:1,01001
反码:1的反码为0。而0的反码为1
补码:正数的补码就是本身,负数的补码等于这个数的绝对值的反码加1,最高位为1表示它是负数,最高位不参与比较。
8位即是8bit,就是8个二进制位,20的的二进制为:00010100,负数在计算机中是用原码和补码来表示的,所以-20的原码就是20的二进制在最高位加1,就是10010100
-20的补码就是20的反码加1,20的反码就是11101011,再加1就是11101100。
-20的反码,就是-20的原码二进制取反,-20的原码是10010100,最高位的1表示负数,所以不参与运算,后面的7位数,依次取反,结果为11101011。
扩展资料:
假设当前时针指向8点,而准确时间是6点,调整时间可有以下两种拨法:一种是倒拨2小时,即8-2=6;另一种是顺拨10小时,8+10=12+6=6,即8-2=8+10=8+12-2(mod 12).在12为模的系统里,加10和减2效果是一样的,因此凡是减2运算,都可以用加10来代替。若用一般公式可表示为:a-b=a-b+mod=a+mod-b。对“模”而言,2和10互为补数。
实际上,以12为模的系统中,11和1,8和4,9和3,7和5,6和6都有这个特性,共同的特点是两者相加等于模。对于计算机,其概念和方法完全一样。n位计算机,设n=8,所能表示的最大数是11111111,若再加1成100000000(9位),但因只有8位,最高位1自然丢失。
参考资料来源:百度百科-补码

补码计算

某整数的16位补码为FFFFH,则该数的十进制为多少
--是-1。
感觉-1和65535都符合要求,可是答案却是-1
--如果是补码,就是-1。
--不是补码,就是 65535。
求详解
--你求出-1 的补码,就行了。
(另为-128补码怎么算 符合位最高位怎么搞)
--你就按照补码的定义式去做,即可。
机器码 FFFFH,可以代表无符号数,就是 65535。
机器码 FFFFH,可以代表带符号数,就是 -1。
-1 是怎么求出来的?
用 65535,减去模(即65536),就等于-1了。
-----
另为-128补码怎么算 符合位最高位怎么搞?
八位二进制数,模是 1 0000 0000,即 256。
按照补码的定义式:
[-128]补 = 256 - |-128| = 128 = 1000 0000。
并没有什么符号位的问题。
首先,叫你计算补码,最好的方式不是将这个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进制去算?对吧?

二进制的补码转换谁会

25+28
0001
1001+0001
1100=0011
0101=(53)10
8位二进制数第一位是符号位是正数的为0,是负数的为1.在求其补码时正数的补码等于其本身,负数的符号位不变,其他位取反,再加1就是这个二进制数的补码。算出的结果再求其补码,将其补码转换成10进制就可以了!
-25-28
1110
0111+1110
0100=1100
1011=1011
0101=(-53)10
唉呀,直接用windows附件里的计算器的二进制,十进制来回转换就是了。要是自己动手去算多麻烦呀。
求补码,一般是先求原码,再取反,再加一,才能求到补码。
其实,“取反加一”只是一个低能的算法而已,并不是求补码根本方法。
补码,是自然生成的,与原码反码毫无关系。
比如,数值 0,在八位计算机中,就是以 0000 0000 来存放。
数值 +1,就是在 0 上加个一,即:0000 0001。
数值 +2,就是在 +1 上再加一,即:0000 0010。
。。。
数值-1,是在 0 的基础上减一,即:1111 1111 (十进制255)。
数值-2,就再减一次一吧,即:1111 1110 (十进制254)。
。。。
其它数值,都是这个规律,不需要谁来设计。
以上这些二进制,就是:整数的补码。
总结:
 正数的补码,就是:用十进制,直接转换成二进制。
 负数的补码,就是:负数+256。
   一般化,就是:负数+2^n,n 是位数。
--------------------------
如果 n = 16,2^16 就是 65536。
那么,[-32768]补 = -32768 + 65536
         = 32768
         = 1000 0000 0000 0000 (二进制)
而,[+32767]补 = 32767
        = 0111 1111 1111 1111 (二进制)
楼主所疑惑的两个补码,就是这么求出来的。
--------------------------
补码,就是自然生成的,与原码反码,毫无关系。
况且,在 n = 16 时,-32768 根本就没有原码和反码。
那么,取反加一,就没有用武之地。
因此,凡是说到“取反加一”的答案,都是错误的。
你说的这个也可以使用変号操作,其实原码转换成补码就是変号操作俗称取负。
16位的二进制书写有符号数的范围就是2的15次方至-2的15次方加1,也就是这个32767到
-32768。
1000000000000000(原码)的反码为01111111111111111.
补码就是在反码的个位上加1就是1000000000000000
所以这个32768同-32768二进制数相同。

阅读更多 >>>  原码 补码 反码,计算机原码反码补码怎样计算

C语言,原码补码转换,-12345求其补码,求教!

在计算机系统中,数值,一律用补码来表示和存放。
原码和反码,在计算机中,都是不存在的。
取反加一,显然就是无稽之谈。
求补码,有明确的公式如下:
  当 X >= 0, [X]补 = X;
  当 X < 0, [X]补 = 2^n - | X |,n 是补码的位数。
这公式,一般的书上都有的。
如果 n = 16,则有:
  [-12345]补 = 65536-12345
        = 53191
        = 1100 1111 1100 0111(二进制) 。
用正负数值,直接就可以求出补码。
不用管“原码反码取反加一符号位不变”这些滥事。
C语言,可以使用 INT 型数。
整型数,是16位二进制数,其模是 65536。
那么,-12345 的补码,就是:65536 - | -12345 | = 53191。
写成 16 位二进制数,就是:1100 1111 1100 0111。
正数原、反、补码相同。
负数的原码、反码、补码不同。
以两个字节(16位)为例(short类型)来理解一下:
(-1)原=1000 0000 0000 0001 最高位为符号位1负,0正,数据总长度为16bits
(-1)反=1111 1111 1111 1110 原码除符号位外,逐位取反
(-1)补=1111 1111 1111 1111 反码+1
由此,我们来看-12345的补码:
(-12345)原=1011 0000 0011 1001
(-12345)反=1100 1111 1100 0110
(-12345)补=1100 1111 1100 0111
感觉你理解出错,是因为没有按字节来认识数据的存储,计算机中的数据最小存储单位为字节,一个字节占8位,一般情况下(32位机)数据的存储空间大小定义为:
char 1byte
short 2bytes
int 4bytes
long 4bytes
float 4bytes
double 8bytes
在C语言程序中,可以用sizeof命令来查看某类型的空间大小,如:printf("%d" , sizeof(long) );可以自己写程序测试一下你的机器。

-55的原码,反码,补码是多少?我这么算为什么不对?

x = -15d = -1111b
[x]原bai =1000 1111b
[x]反du =1111 0000b
[x]补zhi =1111 0001b
.x = +28d = +1 1100b
[x]原 =0001 1100b
[x]反 =0001 1100b
[x]补 =0001 1100b
.x = -37d = -10 0101b
[x]原 =1010 0101b
[x]反 =1101 1010b
[x]补 =1101 1011b
x = -55d = -11 0111b
[x]原 =1011 0111b
[x]反 =1100 1000b
[x]补 =1100 1001b
扩展资料补码为了计算方便而发明的。原始计算器只能做加法不能做减法,但是科学家发现,例如7+(-5)=2可以这样算:7+(-5) = 7+(10000-5)-10000 = 10002 - 10000 = 2 。
这很奇怪,因为机器太傻,只能做加法,但是虽然不会减法,-10000还是很方便的,只要去掉开头的1;用10000减也是很方便的,因为可以用9999减然后+1,而用9999减,只要把每一位用9减。
机器码都是8位,16位,32位,64位的。
[-55]原=10110111
[-55]反=11001000
[-55]补=11001001
-55 = 110111(二进制)
求8位补码:
[-55]原=1011 0111
[-55]反=1100 1000
[-55]补=1100 1001
这是正确答案,别忘了采纳。
+55 = 0011 0111(二进制)。
-55 = 1011 0111(原码)。
-55 = 1100 1000(反码)。
-55 = 1100 1001(补码)。
机器码都是8位,16位,32位,64位的。
[-55]原=10110111
[-55]反=11001000
[-55]补=11001001
x = -15d = -1111b
[x]原 =1000 1111b
[x]反 =1111 0000b
[x]补 =1111 0001b
x = +28d = +1 1100b
[x]原 =0001 1100b
[x]反 =0001 1100b
[x]补 =0001 1100b
x = -37d = -10 0101b
[x]原 =1010 0101b
[x]反 =1101 1010b
[x]补 =1101 1011b
x = -55d = -11 0111b
[x]原 =1011 0111b
[x]反 =1100 1000b
[x]补 =1100 1001b
扩展资料:
正数
正整数的补码是其二进制表示,与原码相同。
例:+9的补码是00001001。(备注:这个+9的补码是用8位2进制来表示的,补码表示方式很多,还有16位二进制补码表示形式,以及32位二进制补码表示形式,64位进制补码表示形式等。每一种补码表示形式都只能表示有限的数字。)
负数
求负整数的补码,将其原码除符号位外的所有位取反(0变1,1变0,符号位为1不变)后加1。
同一个数字在不同的补码表示形式中是不同的。比如-15的补码,在8位二进制中是11110001,然而在16位二进制补码表示中,就是1111111111110001。以下都使用8位2进制来表示。
参考资料来源:百度百科-补码

原码反码补码详细概述

在计算机系统中,数值,一律用补码表示和存储。
原码和反码,都是不存在的,因为,计算机根本就不用它们。
求负数 X 的补码,公式是:
  [ X ]补码 = 2^n - | X |。
如 n = 8,-128 的补码就是:
  [-128]补 = 256 -128 = 128 = 1000 0000。
求补码,很简单的。
就不要用“取反加一”了。
用“取反加一”,是求不出来-128 补码的。
原码:

阅读更多 >>>  原码反码补码都是八位吗,原码反码补码为什么是8位的,如-25的原码是1 0011001,而不是1 11001,中间怎么多出俩0

原码符号位就是正为0,负为1

例子:

34=0010 0010

-29=1001 1101

-19=1001 0011

反码:

正数的反码等于原码,

负数:符号位不变,其余位取反,

-33=1010 0001(原)

1101 1110(反)

-37=1010 0100(原)

1101 1011(反)

-49=1011 0001(原)

1100 1110(反)

补码:

计算机中数据以补码的形式,同样以补码的形式参与运算

正数:原码=反码=补码?

负数:首先求得的反码,在反码的基础上加一,加在最低位上。

-34=1010 0010? ? ? 补码:1101 1110

-29=1001 1101? ? 补码:1110 0011

-47=1010 1111? ? 补码:1101 1111

为什么需要反码和补码?

反码:计算器运算器只有加法器,没有减法器,

但是反码有缺陷,正负相加0不是唯一的

补码:为了解决反码正负相加不唯一的情况,使用高位溢出解决;

例题:

补码:45-19=26

? 0010 1101

+1110 1101

? 0001 1010

53-27=26

? 0011 0101

+1110 0101

?? 0001 1010

65-34=31

? 0100 0001

+1101 1110

?? 0001 1111

-34--27=-61

?? 1101 1110

+ 1110 0101

---------------------------

?? 1100 0011 ? ? ? ? ? ? ? ? ? ? 因为他的结果为负,所以要取他的补码方能得到正确结果: 1011 1101

正数不需要转,负数需要将负数的补码当做原码,求补码,(补码的补码)

例题:

1111 1111 1000 0000【-128补码】求原码

1000 0000 1000 0000

1001 0011 (原)? 1110 1101(补)

网站数据信息

"求补码计算器,原码反码补码详细概述"浏览人数已经达到20次,如你需要查询该站的相关权重信息,可以点击进入"Chinaz数据" 查询。更多网站价值评估因素如:求补码计算器,原码反码补码详细概述的访问速度、搜索引擎收录以及索引量、用户体验等。 要评估一个站的价值,最主要还是需要根据您自身的需求,如网站IP、PV、跳出率等!