1.进制转换
1.1 10进制转2进制
方法:短除法
1.2 2进制转换8进制
8进制的数字每⼀位是0~7的,0~7的数字,各⾃写成2进制,最多有3个2进制位就⾜够了,⽐如7的⼆进制是111,所以在2进制转8进制数的时候,从2进制序列中右边低位开始向左每3个2进制位会换算⼀个8进制位,剩余不够3个2进制位的直接换算。
如:2进制的01101011,换成8进制:0153,0开头的数字,会被当做8进制。

我有一个问题:怎么区别 0111是8进制还是2进制?
1.3 2进制转换16进制
2进制转化16进制和2进制转换8进制十分相似,
16进制的数字每⼀位是0~9,a ~f 的,0~9,a ~f的数字,各⾃写成2进制,最多有4个2进制位就⾜够了,
⽐如 f 的⼆进制是1111,所以在2进制转16进制数的时候,从2进制序列中右边低位开始向左每4个2进
制位会换算⼀个16进制位,剩余不够4个⼆进制位的直接换算。
如:2进制的01101011,换成16进制:0x6b,16进制表⽰的时候前面加0x

2 原码,反码,补码
整数
的2进制表⽰⽅法有三种,即原码、反码和补码
有符号整数的三种表⽰⽅法均有符号位和数值位两部分,2进制序列中,最⾼位的1位是被当做符号
位,剩余的都是数值位。
符号位都是⽤0表⽰“正”,⽤1表⽰“负”。
正整数的原、反、补码都相同。
负整数的三种表⽰⽅法各不相同。
原码:直接将数值按照正负数的形式翻译成⼆进制得到的就是原码。
反码:将原码的符号位不变,其他位依次按位取反就可以得到反码。
补码:反码+1就得到补码。
反码得到原码也是可以使⽤:取反,+1的操作
对于整形来说:数据存放中其实存放的是补码。
//操作符详解
#include<stdio.h>
int main()
{
int num1 = 10;
//10存放在整型变量num1中,占4个字节==32个bit位
//0000 0000 0000 0000 0000 0000 0000 1010 -原码
//0000 0000 0000 0000 0000 0000 0000 1010 -反码
//0000 0000 0000 0000 0000 0000 0000 1010 -补码
//正数的原码,反码,补码都一样
int num2 = -10;
//-10存放在整型变量num2中,占4个字节==32个bit位
//1000 0000 0000 0000 0000 0000 0000 1010 -原码
//1111 1111 1111 1111 1111 1111 1111 0101 -反码
//1111 1111 1111 1111 1111 1111 1111 0110 -补码
//负数的原码,反码,补码要经过计算
return 0;
}
为什么计算机中存补码呢?
在计算机系统中,数值⼀律⽤补码来表⽰和存储。原因在于,使⽤补码,可以将符号位和数值域统⼀ 处理;同时,加法和减法也可以统⼀处理(CPU只有加法器)此外,补码与原码相互转换,其运算过程是相同的,不需要额外的硬件电路。