首页 > 编程知识 正文

32767的补码,负数的补码

时间:2023-05-04 15:58:08 阅读:158021 作者:1074

问题:

16位int

int a=32767; STD :3360 counta1STD : endl; 与数值二进制相关的存储形式有3种,是原码、反码、补充码

一个数的二进制表示形式,在计算机中称为此数的机器数。 随机数有符号,计算机用一个数的最高有效位存储符号,正数为0,负数为1。 第一位是符号位,因此机器数量的型号值不等于真数值。 例如,字长8位的码数10000011,形式值131真值-3。 为了便于区分,将与带符号位的机器数量相对应的真实数值称为机器数量的真值

对于一个数,计算机必须采用一定的编码方式进行存储。 原码、反码、补码是机器存储具体数字的编码方式

在程序进行数值计算的时候,使用数值的补码进行运算(内存中表现形式),然后使用计算结果的原码进行显示

原码:把最高位当作符号位,0表示正数,1表示负数,数值0的原码是0000 0000,而字长八位的1111 1111表示位-127,规定1000 0000表示为-128。字长16位的 1000 0000 0000 0000用来表示 -32768

正数的反码和原码一样,负数的反码是原码除符号位以外,每一位取反

正数的补码和原码一样,负数的补码是反码+1

所以,

32767源代码: 0111111111111

32767的反码: 01111111111111111

32767的补数: 01111111111111

1的补数: 00000000000001

符号位不参与运算

37671=100000000000000 (3358 www.Sina.com/) ) ) )。

要显示计算结果,请使用原代码,将存储器内的计算结果(1000(0000 ) 0000000 )转换为原代码。 最高位为1,因此为负数,补数为原代码(除符号位外取反,变换为1 )。 得到的值为1000 ) 00000 ) 00000000,真值为-32768

参考: https://www.cn blogs.com/zqiu/archive/2011/03/30/computer code.html

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。