博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c/c++原码反码补码原理 以及进制转换
阅读量:6939 次
发布时间:2019-06-27

本文共 1452 字,大约阅读时间需要 4 分钟。

1首先了解 低字节位 和高字节位 看图 

2字节在内存的排列方式 

1
2
3
4
5
6
7
8
9
10
11
 
//int num = 010; //0开头代表 8禁止
 
//("%d",num); //所以打印的是8
 
int 
num = 0x12345678;  
//将占 2 32位
 
printf
(
"%p"
, &num); 
 
/*  要特别 注意 低位 在低字节 高位  高字节
 
0x0063FAC0  78  x
 
0x0063FAC1  56  V
 
0x0063FAC2  34  4
 
0x0063FAC3  12  .
 
*/
 
看图2

3 printf  不会进行自动转换 

void main()
{
 printf("%d", 10.3);
 printf("\n%f", 10);

 getchar();

}

请看图3

4 一定要注意数据会溢出数据会溢出

请看图4

unsigned short num = 65535;

 printf("我有现金:%d元",num);

unsigned short num = 65535+1;
 printf("我有现金:%d元",num);

上面这样数据就会溢出

5 原理

1
2
3
4
5
6
7
头文件#include<limits.h>
 
printf
(
"%d"
, INT_MAX);
 
printf
(
"\n%d"
, INT_MIN);
 
printf
(
"\n%u"
, UINT_MAX);
 
//有负号的情况下 0代表正式 1代表负数
 
//1111 1111 1111 1111 1111 1111 1111 1111 
 
//0111 1111 1111 1111 1111 1111 1111 1111

6源码反码补码

//1的源码和-1的源码
 //0000 0000 0000 0000 0000 0000 0000 0001
 //1000 0000 0000 0000 0000 0000 0000 0001
//-1符号为是1


源码反码补码过程
//源码1000 0000 0000 0000 0000 0000 0000 0001


//-1反码1 符号位不变  所有0变1  1变0
//111 1111 1111 1111 1111 1111 1111 1110


//-1补码  符号位不变  所有0变1  1变0  在补1(在反码基础是+1)
//111 1111 1111 1111 1111 1111 1111 1111
 unsigned int num = -1;
 printf("%d %u", num, num);

虽然补码后二进制相同 但是他们有负号的符号位不算 所以数据不相同


7为什么要用补码  非常重要!!!

0000 0001  1   (1代表十进制)
1000 0010  2   (1000 0010 是2的源码)


如果我们用2的补码
1000 0010  源码

1111 1101  反码(所有位取反 负号不变)

1111 1110  补码(反码基础 +1)


这时候在相加

0000 0001  1 
1111 1110  2的补码
1111 1111  是不是就是-1


-1 源码
1000 0001
1111 1110 反码
1111 1111 补码
用补码的原因就是因为可以大大节约计算机的资源

8 数据的取值范围



 本文转自超级极客51CTO博客,原文链接:http://blog.51cto.com/12158490/1879198,如需转载请自行联系原作者

你可能感兴趣的文章
Visual Studio 2012+jQuery-1.7.1
查看>>
Java对象的序列化和反序列化(转)
查看>>
Appium 在 Android UI 测试中的应用
查看>>
bootstrap-datetimepicker中设置中文
查看>>
tab切换效果
查看>>
石家庄地区招聘php和android开发实习生!
查看>>
PHP 转换snmp的时间格式
查看>>
登录界面 动画背景效果
查看>>
DEV 第三方控件报表分类汇总
查看>>
CSS截取字段,让过长的字段结尾变成省略号(IE有效)
查看>>
ubuntu下php7安装及配置
查看>>
Shiro 设置session超时时间
查看>>
html5-增强的表单-表单的重写
查看>>
sql
查看>>
DirectX9 着色器学习(一)
查看>>
Codeforces 854 B Maxim Buys an Apartment 思维 水题
查看>>
通过1997年拓荒者号飞行器事件理解优先级反转
查看>>
python做数据清洗
查看>>
山东理工OJ【2054】双向链表(两种方法)
查看>>
2014华为机试——两个城市之间的最多路径
查看>>