补码,真值,原码,反码都由符号位和数值位组成
符号位:0为正,1为负
数值位:将想要表示的数转化为二进制数即可
1.机器数:机器无法区分正负,用0和1来区分,这样的数就是机器数
2.真值:带有 “+” 或者 “-” 的数称为 真值
真值:+ 00000000 00000000 00000000 00100101
注意:真值就是+、-号和二进制数组成
3.原码:就是将数转化为二进制数
原码: 00000000 00000000 00000000 00100101
注意:负数的原码,符号位始终为1,也就是第一位始终为1,剩下的位数依次取反
4.反码:正数的反码就是它的原码;负数的反码为原码的每一位的0变1、1变0
注意:为防止混乱,建议先转化为原码,再进一步转化
5.补码:正数的补码就是它的原码;负数的补码为它的反码加一
总结:
转化次序为:
真值
原码
反码
补码
个人经验:
1)最高位均为符号位;
2)当真值为正数时,原码、反码、补码的表示形式相同,符号位用 “0” 表示,数值部分真值相同;
3)当真值为负数时,原码、反码、补码的表示形式不同,但是符号位都用 “1” 表示,数值部分:反码是原码的 “按位取反”,补码是反码加一;
转化规律白话文:
正数死都不变
负数符号位就是1,永远不会变(除真值用-号);数值位:原码就是去掉正负号的二进制数,反码、补码就是去掉正负号的二进制数每位取反
符号位和数值位分开考虑,符号位正为0,负为1;数值位只考虑是否取反,不要想符号啥的,因为符号位一开始就选好了,不是吗?不要多想。
c语言 补码,真值,原码,反码,机器数比较
最新推荐文章于 2024-12-20 23:50:12 发布