1. 什么是原码、反码、补码?
计算机要使用某种编码方式存储 原码, 反码, 补码是机器存储某个具体数字的编码
计算机底层存储的数据都是二进制形式的补码
对于一个正数来说,原码、反码、补码一致
对于一个负数来说 ↓
原码:直接将十进制数转为二进制后就是原码,最高位代表符号位(0为正 1为负)
反码:除符号位外对原码进行取反
补码:反码+1后得到
2. 实例:
当a为正数时
#include <stdio.h>
void main() {
int a = 3;
}
a的原码:00000000000000000000000000000011
a的反码:00000000000000000000000000000011
a的补码:00000000000000000000000000000011
当a为负数时
#include <stdio.h>
void main() {
int a = -3;
}
a的原码:10000000000000000000000000000011
a的反码:11111111111111111111111111111100(符号位不变,数值位取反)
a的补码:11111111111111111111111111111101(反码+1)
计算机中真正存储的是a的补码 11111111111111111111111111111101
3. 补码转原码
补码转原码其实和原码转补码大差不差,正数还是都一致,不需要转换。负数则需要补码->反码->原码
来看这一道题:已知某数X的补码11111111111111111111111111111011,试求X十进制数值
补码:11111111111111111111111111111011
-1后:11111111111111111111111111111010
反码:10000000000000000000000000000101
原码:10000000000000000000000000000101
最终结果:-5
关于原码、反码、补码的讲解到这里就结束了,如果有什么疑问的地方欢迎留在评论区,谢谢支持~
封面奉上↓