luck_roki 发表于 2017-6-14 19:47:09

复习——进制转化及补码总结

进制转换:
八进制的1位对应二进制的3位
十六进制的1位对应二进制的4位
八进制和十六进制之间的转换需先转换为二进制
c语言表示相应进制
8:以数字‘0‘开头
16:以0x开头


计算机存储数字以补码方式存储(为了解决负数的存储)
原码存储导致两个问题:
    1、0有两种存储方式
    2、正数和负数相加,结果不正确(计算机只会加,不会减)

反码存储导致一个问题:
    1、0有两种存储方式
反码(为了算补码)
    1、正数的原码和反码一样
    2、求原码
    3、符号位不变,其他位取反(0变1,1变0)

补码:
    1、正数的原码、反码、补码一样
    2、负数的原码为其反码+1
补码转原码:
1)求补码的反码,符号位不变,其他位取反
2)将得到的反码加1


十进制数:站在用户角度,原码
二进制、八进制、十六进制:站在计算机角度,补码

用八进制和十六进制对变量进行赋值时需采用’补码‘形式
printf函数下用%o或%x打印十进制数值时,输出结果为补码形式。
解读顺序:八(十六)进制数 -> 二进制数 -> 反码 -> 原码 -> 十进制数
页: [1]
查看完整版本: 复习——进制转化及补码总结