黑马程序员技术交流社区
标题:
有没有知道原码,反码,补码的?
[打印本页]
作者:
RichardM
时间:
2015-7-5 14:48
标题:
有没有知道原码,反码,补码的?
有没有知道原码,反码,补码的?求指教
作者:
qq4916097
时间:
2015-7-5 15:33
本帖最后由 qq4916097 于 2015-7-5 15:34 编辑
1.正数的反码=补码=原码 如 3的原码=0000 0011 所以他的反码=补码=0000 0011
为什么3的原码是0011呢? 你用8421来看待,千位是8,百位是4,十位是2,个位是1。
而前面的0000代表 千位(符号位0为正1为负) 百位(64) 十位(32) 各位(16),
64 32 16 8 4 2 1 想到什么了么 从右向左看 对 没错 就是2的N次方
0011=>0*8+0*4+1*2+1*1=3 心算3=1+2 即为0011 9=1+8 即为1001 9=2+8 即为1010 以此类推
2.负数的原码
原码和正数一样,只是将最高位变为1.如-3=1000 0011 因为3=0000 0011 -3就是在3的基础上将符号位变为1 所以为1000 0011
负数的反码=原码取反(记住 不包括符号位)。如-3的原码是=1000 0011 取反得1111 1100(最左边的1为符号位)
负数的补码=反码+1,如-3的反码是1111 1100 所以他的补码是1111 1101
作者:
呵呵君
时间:
2015-7-5 20:15
据说,这个是文件加密的原理
作者:
白面馅包子
时间:
2015-7-5 21:02
我只是 来看二楼的答案的
作者:
时光无痕
时间:
2015-7-5 21:11
正数原码,反码,补码都相同。负数原码取反之后是反码,加1是补码。
作者:
时光无痕
时间:
2015-7-5 21:18
本帖最后由 时光无痕 于 2015-7-5 21:24 编辑
正数原码,反码,补码都相同。负数原码取反之后是反码,加1是补码。但是运算过程中符号位不变
作者:
时光无痕
时间:
2015-7-5 21:21
正数原码,反码,补码都相同。负数原码取反之后是反码,加1是补码。但是运算过程中符号位不变。计算机中都是int型。32位最高位就是符号位,0表示正。1是负数,所以如负数2的原码是:1(符号位)000 0000 0000 0010
反码:1111 1111 1111 1101 补码就是+1得:1111 1111 1111 1110
作者:
sophitia
时间:
2015-7-5 21:32
二楼回答得很好 我也顺面复习了 感谢!
作者:
threeforPP
时间:
2015-7-5 21:45
正数原码,反码,补码都相同。负数原码取反之后是反码,加1是补码。
作者:
wuwenwen3779
时间:
2015-7-5 22:12
正数的反码和补码,原码 是一样的,负数的反码=原码取反,补码是反码加1
作者:
hp_discuz
时间:
2015-7-5 22:17
这里我举个例子说明一下:
作者:
鹰隼展翼
时间:
2015-7-5 22:21
正数原码,反码,补码都一样
作者:
鹰隼展翼
时间:
2015-7-5 22:22
负数的反码是原码除符号位外取反,补码是反码+1
作者:
张业涛
时间:
2015-7-5 22:22
我们平时看到的收拾反码,但是在底层是利用源码做计算的
作者:
xuhao3622603
时间:
2015-7-5 22:26
1变0,0变1,正变负加一
作者:
hp_discuz
时间:
2015-7-5 22:29
这里我举个例子说明一下:已正整数6举例
6的原码:00000110
6的反码:00000110
6的补码:00000110
已负数-6举例
-6的原码:10000110
-6的反码:11111001
-6的补码:11111010
正整数的原码、反码、补码是一样的
负数的原码在最前面加1,反码是除最前面的1不变,其他位取反;补码是反码加1
作者:
官沛
时间:
2015-7-5 22:35
二楼的解答很详尽,学习了!
作者:
wws1214
时间:
2015-7-5 22:36
正数的原码、反码、补码都一样
作者:
冷风然
时间:
2015-7-5 22:42
正数的原反补都一样
作者:
通往牛逼的路上
时间:
2015-7-5 22:49
计算机的运算都是以补码的形式计算的。。
作者:
秀丽xl
时间:
2015-7-5 23:30
原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值. 比如如果是8位二进制: [+1]原 = 0000 0001 ;[-1]原 = 1000 0001 反码的表示方法是: 正数的反码是其本身 负数的反码是在其原码的基础上, 符号位不变,其余各个位取反. [+1] = [00000001]原 = [00000001]反 [-1] = [10000001]原 = [11111110]反 如果一个反码表示的是负数, 人脑无法直观的看出来它的数值. 通常要将其转换成原码再计算. 补码的表示方法是: 正数的补码就是其本身 负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1) [+1] = [00000001]原 = [00000001]反 = [00000001]补 [-1] = [10000001]原 = [11111110]反 = [11111111]补 对于负数, 补码表示方式也是无法直观看出其数值的. 通常也需要转换成原码在计算其数值. 对于正数因为三种编码方式的结果都相同: [+1] = [00000001]原 = [00000001]反 = [00000001]补 对于负数: [-1] = [10000001]原 = [11111110]反 = [11111111]补
作者:
东东的一些事
时间:
2015-7-5 23:41
计算机无论是计算还是存储,都是以二进制补码进行的。
作者:
钟志军zzj
时间:
2015-7-5 23:43
正数的原码反码补码都是本身负数的反码最左边的1代表符号不变其它的数和原码相比0变1,1变0补码就是反码+1
作者:
1115302782
时间:
2015-7-6 07:31
我们刚讲过这个
作者:
Enhon1992
时间:
2015-7-6 08:21
学习了!!
作者:
云雀
时间:
2015-7-6 08:27
我也想来看看
作者:
tinibuzhi
时间:
2015-7-6 08:43
看看计算机组成原理吧
作者:
帅帅loyal
时间:
2015-7-6 08:52
正数的原码,反码,补码都一样,负数的原码最高位是1(符号位),反码是除了最高位以外其他地方都取反,补码是在反码的基础上加1
作者:
杰可可
时间:
2015-7-6 09:00
又复习了一遍
作者:
jake_liu
时间:
2015-7-6 17:21
大家都回答的很好,复习了下
作者:
q953655369
时间:
2015-7-6 21:30
我知道点 源码是虚拟机的 反码和补码是自己算的
作者:
小绿
时间:
2015-7-6 22:55
2楼回答的好
作者:
自行车呢
时间:
2015-7-6 23:19
二楼的解答很详尽,学习了!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2