补码
计算机基础(补码)
原码
也叫符号-绝对值码
最高位0表示正数 1表示负数,其余二进制位是该数字的绝对值
原码简单易懂
加减运算复杂
存在加减乘除四种运算,增加了CPU的复杂度
零的表示不唯一
反码
反码运算不便,也没有在计算机中应用
移码
表示数值平移n位,n称为移码量
移码主要用于浮点数的阶码的存储
补码
十进制转二进制
正整数转二进制
除2取余,直至商为零,余数倒序排序
负整数转二进制
先求与该负数想对应的正整数的补码,然后将所有位取反,末尾加1,不够位数时,左边补1
(-3) 正整数补码 011 取反 100 末尾加1 101 左边补1 11111101 对应的十六进制 0X FFFFFFFD
二进制转十进制
如果首位是0,则表明是正整数,按普通方法来求
如果首位是1,则表明是负整数
- 将所有位取反,末尾加1,所得数字就是该负数的绝对值
101111 取反 010000 加1 010001 -17
1001010 取反 0110101 加1 0110110 36 -54
#include <stdio.h> int main(void) { int i = -100; printf("%#X\n", i); int j = 0xFFFFFFCA; printf("%d\n", j); return 0; }