补码原码转换c语言代码,c/c++原码反码补码原理 以及进制转换

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

156f4e1211a6df65fd77486b86cc92a0.png

2字节在内存的排列方式//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

cde6cbf75df67693551361c68130bac9.png

3 printf  不会进行自动转换

void main()

{

printf("%d", 10.3);

printf("\n%f", 10);

getchar();

}

请看图3

cbacc536439e1ad1d4d5f1a1315f6e5d.png

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

请看图4

unsigned short num = 65535;

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

unsigned short num = 65535+1;

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

上面这样数据就会溢出

651bb05ce98a0db2ee369a753f6b7c68.png

5 原理头文件#include

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

6d3ac9b2044a25944a413dda557b0e13.png

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);

31c8b06ae23ba94e7bc01dc9623c7b1c.png

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

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 数据的取值范围

f320d5c8069ea6a20ef6df1a7dfdad18.png

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值