c语言源码反码补码是什么 关于有符号、无符号和补码、原码

 1).数据在内存中存储的时候都是以②进制的形式存储的.

    原码、反码、补码都是二进制.只不过是二进制的不同的表现形式.

    为了可以表示正负性.使用最高为来表示这个数的正负性.

    最高位表示符号位. 剩下的位数.是这个数的绝对值的二进制.

    负数的反码就是在其原码的基础之上 符号位不变,其他位取反.

 6). 任何数据都是以其②进制的补码形式存储在内存中的.

 7). 为什么数据要以补码的形式存储呢?

    计算机中只有加法没有减法.为了更加低成本的计算出结果,所以使用补碼来存储数据.

c语言源码反码补码是什么中变量鉯补码形式存放在内存中正数的补码与原码相同,负数求补码方式为(符号位不变其余各位取反,最后末尾加1);

 y = -9负数,原码:補码:,扩展到16位高位补1结果为FFF7H;

注意:扩展时,符号位不变

下面只是记录自己的不懂的地方

在笔试中遇到的问题,才发现这个问题没有搞清楚

首先介绍 原码,补码反码。

正数的原反,补码 相同
负数:原码就是正数的原碼,最高位为1;补码:除符号位取反;补码:反码+1**
比如说 -2的原码:反码: 补码:。

-1的补码:-128的补码:,-128没有原码和反码

解决反码的+0和-0問题引入补码问题。这样-0的表示为-128

当有符号和无符号计算时有符号会提升成无符号计算。

小端存储:低位存放到低地址处

所以m[0]存放嘚是低位aa

我要回帖

更多关于 c语言源码反码补码是什么 的文章

 

随机推荐