① 计算机内部如何存储数据,关于源码、补码的问题!
1.
补码
(1)正数的补码
与原码相同。 【例1】+9的补码是00001001。(备注:这个+9的补码说的是用8位的2进制来表示补码的,补码表示方式很多,还有16位2进制补码表示形式,以及32位2进制补码表示形式等。)
(2)负数的补码
符号位为1,其余位为该数绝对值的原码按位取反;然后整个数加1。 同一个数字在不同的补码表示形式里头,是不同的。比方说-15的补码,在8位2进制里头是11110001,然而在16位2进制补码表示的情况下,就成了1111111111110001。在这篇补码概述里头涉及的补码转换默认了把一个数转换成8位2进制的补码形式,每一种补码表示形式都只能表示有限的数字。
原码
原码(true form)是一种计算机中对数字的二进制定点表示方法。原码表示法在数值前面 原码
增加了一位符号位(即最高位为符号位),该位为0表示正数或者0(当为0时第一位不能为1,因为如果把10000000也当成0会造成和-128原码冲突),该位为1表示负数,其余位表示数值的大小。
反码
所谓原码就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。 反码表示法规定:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。 补码表示法规定:正数的补码与其原码相同;负数的补码是在其反码的末位加1。
2.
(1)、在计算机系统中,数值一律用补码来表示(存储)。 主要原因:使用补码,可以将符号位和其它位统一处理;同时,减法也可按加法来处理。另外,两个用补 码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃。
(2)、补码与原码的转换过程几乎是相同的
3. 2.^4+2.^1 = 17 表示 17
谢谢 采纳
② 源码反码与补码
8位2进制原码反码补码表示法:第一位是符号位,正数为0负数为1
-67的原码是11000011,换成反码符号位不变,其他各位依次求反:
10111100,换成补码只在反码基础上末位加1:
10111101。
55的原码00110111,正数原码反码补码相同。
补码实现55-67:00110111
+10111101
---------------------------
11110100
把这个补码末位减一,符号位不变各位取反得到结果的原码表示:10001100,
转换成十进制刚好等于-12,验证了结果11110100是正确的。
③ C语言源码生成目标文件后的二进制码是原码,反码,还是补码
计算机中的二进制码形式特指数值的二进制码形式。
目标文件中包含有字符串、指令、相关数据等,其中数据部分大多是用补码形式保存的。其它部分没有这样的概念。
说大多是因为有些计算机体系不用补码形式保存数据。
至于计算机倒底何时用原码、反码、补码,我想是楼主对码制有所误解。
采用何种码制与CPU相关。比如I386体系,负数用补码表示,C语言编译器在遇到负数时会转化成补码形式。
④ 原码和补码是什么意思
原码,没有任何意义。
补码具有:用正数代替负数,把减法变成加法运算的功能。
这样,计算机中,只需用一个加法器,便可进行加减运算了。
所以,在计算机中,只是使用补码。根本就不用原码和反码。
对于钟表,倒拨 4 小时,可用正拨 8 小时代替。
对于十进制数,减一,可以用 +99 代替。
比如:24-1 = 23
24 + 99 = (1) 23
忽略进位,只取低两位,结果就是相同的。
这里用来代替负数的正数,就叫做“补数”。
计算机用二进制,就叫做“补码”。
正数,直接运算即可,不用求补码。
负数的补码是:模+该负数。
八位二进制的模是:2 的 8 次方=256。
-1 的补码,就是:256-1 =255 = 1111 1111(二进制)。
-2 的补码,就是:256-2 =254 = 1111 1110(二进制)。
。。。。。。
-128 的补码,就是:256-128 =128 = 1000 0000(二进制)。
求补码,用公式就可得出,并不需要绕道原码反码符号位。
⑤ 什么是源码 什么是补码 什么是反码
0原码是00000000
-0原码是10000000
0反码是00000000
-0反码是11111111
0补码是00000000
补码没有正0与负0之分
正数的反码、补码和其原码相同负数的反码是其原码除符号位外其他位取反负数的补码是取其反码后加1
⑥ 源码 反码 补码的概念
带符号数,有三种表示方法,即:原码、反码和补码。
但是,在计算机系统中,数值一律用【补码】来表示和存储。
所以,在计算机系统中,原码和反码,都是不存在的。
使用补码的意义:可以把减法或负数,转换为加法运算。
因此,就能简化计算机的硬件。
=====================
补码的概念,来自于:补数。
比如钟表,时针转一圈,周期是 12 小时。
那么,倒拨 3 小时,可以用正拨 9 小时代替。
9,就是-3 的补数。计算方法:9 = 12-3。
同理,分针倒拨 X 分,可以用正拨(60-X)代替。
60,是分针的周期。
同理,三角函数的周期是 2π。那么,
在-π/2 处的函数值,就与2π-π/2 = +3π/2处相同。
------------
当你使用两位十进制数:0~99,周期就是 一百。
那么,减一,就可以用 +99 代替。
24-1 = 23
24 + 99 = (1) 23
舍弃进位,这两种算法,功能就是相同的。
于是,99 就是 -1 的补数。
其它负数的补数,可以按照下式来求:
补数 = 周期 + 负数
------------
计算机中使用二进制,补数,就改称为【补码】。
八位二进制是:0000 0000~1111 1111。
相当于十进制:0~255,周期就是 256。
那么,-1,就可以用 255 = 1111 1111 代替。
所以:-1 的补码,就是 1111 1111 = 255。
同理:-2 的补码,就是 1111 1110 = 254。
继续:-3 的补码,就是 1111 1101 = 253。
。。。
最后:-128 的补码,就是 1000 0000 = 128。
负数补码的计算公式:【 256 + 这个负数 】。
(式中的 256 = 2^8,是八位二进制的周期。)
正数,并不存在补码的问题。
所以,正数,并没有补码,可以直接运算。
(也有人乱说:正数本身就是补码。)
------------
求解算式:7-3 = 4。
计算机中,并没有减法器,必须改用补码相加。
列竖式如下:
7 的补码=0000 0111
-3的补码=1111 1101
--相加-------------
得:(1)0000 0100= 4 的补码
舍弃进位,只保留八位,结果完全正确。
------------
借助于补码,可以简化计算机的硬件。
原码和反码,都没有这种功能。
所以,在计算机中,根本就没有原码和反码。
它们都是什么?就不用关心了。
⑦ 要源码和补码到底是干什么呢,我实在搞不懂
正数的原码,反码,补码相同,没有变化。
负数才有 原码,反码,补码 的区别。
负数,不考虑符号位外的各位,按位取反,(1变0,0变1),就成反码。
反码加1,就是补码。
电脑里负数用的是补码。
强调一下:负数才有 原码,反码,补码 的区别。
正0 -- 是正数。
负0 -- 是负数,有 原码,反码,补码 的区别。负数用的是补码。
负数用补码,使减法变加法做,计算机硬件有 加法器,用补码,直接用加法器做减法,速度快。
⑧ 证书的原码,反码,补码相同
正数的是相同的。