原码
也叫 符号-绝对值码
最高位0表示正,1表示负,其余二进制位是该数字的绝对值的二进制位.如-5的原码为10101
原码简单易懂,但加减运算复杂,存在加减乘除四种运算,增加了cpu的复杂度,零的表示不唯一
反码
反码运算不便,也没有在计算机中应用
移码
移码表示数值平移n位,n称为移码量,主要用于浮点数的阶码的存储
补码
十进制求二进制
正整数转二进制
除2取余,直至商为零,余数倒叙排序
负整数求二进制
先求与该负数相对应的正整数的二进制代码,然后将所有位取反,末位加1,不够位数时,左边补1
如-3在32位系统中 → 11 →00 →01 → 左边补30个1 → 得1......01
零求二进制
全是零
二进制求十进制
如果首位是0,则表明是正整数,按普通方法来求
如果首位是1,则表明是负整数
将所有位取反,末位加1,所得数字就是该负数的绝对值
#include<stdio.h>
int main(void)
{
int i = -3; // → 正整数11 → 取反00 →加一 01 →补一 1... 01 0XFFFFFFFD
int j = -1; // →正整数 1 →取反 0 →加一 1 →补一1... 1 0xFFFFFFFF
int k = -100;//→正整数 1100100 →取反 0011011 →加一 0011100 →补一1....0011100 0XFFFFFF9C
int l = 0xFFFFFFCA; //→ 0X35 → 0X36 → 54 得出l是-54
printf("i = %#X %d\n",i,sizeof(int));
printf("j = %#X k = %#X\n",j,k);
printf("二进制求十进制\n");
printf("l = %d",l);
return 0;
}