进制与原反补—C语言的内功
目录1.进制转换1.1初识进制1.2进制之间的转换2.原码、反码、补码2.1 原码2.2反码2.3补码1.进制转换1.1初识进制十进制个位为n10^0。(0-9)十位为n10^1。(0、10、20、30、40、50……90)百位为n10^2。(0、100、200、300、400、500……900)(n为0-9)N分位就乘10的N次方二进制我认为同理我们可以这样认为个位n2^0。(0-1)二位n2^1。(0、2)四位n2^2。(0、4)(n为0-1)N位就乘2的N次方八进制n8^0(0,1)n8^1(0,8)n*8^2(0,16)(n为0-1)十六进制是以0-9A-F你数一数刚好十六个数字也就是说(A-F)为10-15。这些都说明进制的单位可以自己规定但常用的就是十进制、二进制、八进制、16进制。1.2进制之间的转换二进制 转 十进制十进制转二进制值得注意的是余数是倒过来写的。二进制转八进制这是一种最好的算法三个二进制位是一个八进制位。1* 2^0 1 * 2^1 0 * 2^2 3 * 8 ^0;1* 2^3 0 1* 2 ^5 5 * 8 ^12进制01000000转八进制100一样二进制转十六进制和二进制转八进制类似b111 * 2 ^ 01 * 2 ^ 1 0 * 2 ^ 2 1 * 2 ^ 3 11所以记住四个二进制位是一个八进制位。相反的从16进制转换为二进制或者八进制转化为二进制时就可以将每个16进制数或者每个八进制数分别拆成4个或3个二进制数比如说b1011,熟悉后这些可以通过口算获得。2.原码、反码、补码2.1 原码我先让大家直观感受一下他长啥样其实这就是整数的2进制表⽰的三种⽅法即原码、反码和补码我们都知道一个int类型的数有4个字节而一个字节有8个比特那么一个int类型就有32个比特即32个小格子由图我们可以知道地一个格子表示符号其余格子整体上表示数值。那么新的问题又来了它具体是如何表示的呢?在第一个格子中“1”表示负数“0”表示正数其余表示数值的格子里的数字就要用到二进制的计算方法。这个算出来数字是多少呢答案是10步骤:0 * 2 ^0 1 * 2^1 0 * 2^2 1 * 2^3 2810;如果第一个格子是1则为-102.2反码将原码的符号位不变其他位依次按位取反就可以得到反码。2.3补码反码1就得到补码特殊的补码得到原码也是可以使⽤取反1的操作。//10000000000000000000000000001010 原码 //11111111111111111111111111110101 反码 //11111111111111111111111111110110 补码表示-10在计算机中以补码形式储存你将补码翻译成原码就可以翻译出-10。总结:原码是给人看的补码是给计算机看的计算机进行一切操作都是对补码进行操作。