欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

10.原码 反码 补码

发布时间:2025/3/21 编程问答 39 豆豆
生活随笔 收集整理的这篇文章主要介绍了 10.原码 反码 补码 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

+7的原码:0000 0111 

-7的原码:1000 0111   第一位0代表正数,1代表负数,第一位为符号位

 

+7的反码:0000 0111 正数反码和原码一样

-7的反码:1111 1000  符号位不变,其他取反

 

+7的补码:0000 0111 正数补码和原码一样

-7的补码:1111 1001 十六进制为:F9 负数的补码原码取反再加一


 

举个例子:

1 #include<stdio.h> 2 #include<stdlib.h> 3 4 void main() 5 { 6 char ch = -17; 7 //0001 0001 +17原码 8 //1001 0001 -17原码 9 //1110 1110 反码 10 //1110 1111 -17补码 十六进制:ef 11 printf("%p", &ch); 12 13 getchar(); 14 15 }

查看内存变量:  

规律:

正数:原码,反码,补码,正数都是一样的

负数:原码取反(不包括符号位)+1 = 补码


1 #include<stdio.h> 2 #include<stdlib.h> 3 4 void main() 5 { 6 int num = -1; 7 //0000 0000 0000 0000 0000 0000 0000 0001 +1原码 8 //1000 0000 0000 0000 0000 0000 0000 0001 -1原码 9 //1111 1111 1111 1111 1111 1111 1111 1110 -1反码 10 //1111 1111 1111 1111 1111 1111 1111 1111 -1补码 11 printf("%u", num); 12 13 getchar();

结果:


补码的好处:

+7补码:0000 0111  补码为:0000 0111

-1补码:1000 0001   补码为: 1111 1111

         补码和为: 0000 0110 换成原码就是+6            

 

+7补码:0000 0111 

-9补码:  1111 0111

和为:      1111  1110

反码为:   1000 0001 

再加1 :    1000 0010 代表的数为-2

 

转载于:https://www.cnblogs.com/xiaochi/p/8094196.html

《新程序员》:云原生和全面数字化实践50位技术专家共同创作,文字、视频、音频交互阅读

总结

以上是生活随笔为你收集整理的10.原码 反码 补码的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。