C语言基础之《原码,反码,补码》
来源:互联网 发布:ubuntu如何打开py文件 编辑:程序博客网 时间:2024/05/17 07:01
关于原码,反码,补码我们必须先明确:
只有有符号数才有原码反码补码,其在内存中是以补码的形式存储, 无符号数在内存中是以二进制数的形式存储的!
所谓有符号数的原码就是将它的最高位当成符号位,0:表示正,1表示负。其余为数值位表示数值的大小。正数的原码反码补码相同。负数的原码除符号位外其余各位等于其绝对值数的原码。负数的反码等于除符号位外对其原码逐位取反。负数的补码在其反码的基础上加1.
下面看两个简单的例子:
(1)
int main(int argc ,char **argv)
{
unsigned char c;
c = 300;
fprintf(stdout, "c = %d/n", c)p;
return 0;
}
结果:c = 44;
这很好理解因为数据溢出300 - 256 刚好为 44;
(2)
int main(int argc, char **argv)
{
signed char c;
c = 200;
fprintf(stdout, "c = %d/n", c);
return 0;
}
结果为:c = -56;
为什么不是:200 - 128 等于72呢?
而是 - 56?
这是因为200无论把它当成无符号数还是有符号数其在内存中存储形式都是11001000.
c = 200,即11001000写入变量c所代表的字节中。因为我们声明了c为有符号数。有符号是在内存中都是以补码的形式存储的。所以编译器把11001000看成补码。减1得到反码11000111.除符号位外各位取反得到原码10111000.转化成十进制恰好位-65。
- C语言基础之《原码,反码,补码》
- C语言基础-----进制转换,原码反码补码
- c语言基础系列-原码 反码 补码10
- C语言基础 原码 反码 补码 移码简介
- C语言之位运算/原码/反码/补码
- C 语言 - 整型 原码,反码,补码
- C语言原码、反码、补码
- C语言(四):原码、反码、补码
- Java基础之 原码、反码、补码
- 原码反码补码基础
- 原码反码补码基础
- [基础]原码反码补码
- C语言基础一之预备知识(计算机结构组成、计算机系统组成、进制、原码反码补码)
- C 【原码 反码 补码】
- C语言-数据类型(原码、反码、补码)
- c语言原码,补码,反码你们不在意的由来
- C语言 八进制 16进制 原码 反码 补码 按位取反
- C语言的原码,反码和补码
- 该死的Paypal API
- 工程项目
- 六月份解题日志
- 第三章习题3 在1-49中随机选6个数字
- 网页制作中常用的基础知识002-CSS布局与表格布局的区别
- C语言基础之《原码,反码,补码》
- 安装Tomcat、JDK时候的系统配置环境变量
- link时出现error LNK2001的解决方法
- error LNK2019的解决方法
- 写系统日志的步骤及注意事项
- Fedora 无法开始yum? yum占用
- 峥嵘岁月,何惧风流[1]
- 简单介绍AFD和WSS的相关文档
- RHEL5下安装Rtl8169网卡驱动