将与晶体管1-开和0-关对应的二进制1和0转换为十进制表示
计算机使用的正是二进制(binary)数制,这是一种基数为2的数制,它只有两个数字:0和1,因为它可以对应上述的数字电路中的标识。数字满2就进一位,这样就可以使用0向无穷进位的值来充当唯一序列,代表固定的字母和值。
但是我九年义务教育学到使用的是十进制0到9来计算,二进制和十进制是两种不同的数值表示法,只是进位规则不一样而已。二进制是从右往左数
它两可以来回转换:
十进制转二进制:将十进制数除以2,记录下每次除法的余数。然后将商继续除以2,再次记录余数。这个过程一直重复,直到商为0。将所有的余数从下到上写出来,得到的序列就是对应的二进制数。
二进制转十进制:将二进制数从右到左的每一位乘以2的相应幂次方(从0开始),然后将所有的乘积相加。得到的结果就是对应的十进制数。
其实这些转换知道就行,反正它是固定的,我们来看一下前十个的对应关系,以下是二进制数从0开始的前几个数:
0 (二进制) = 0 (十进制)
1 (二进制) = 1 (十进制)
10 (二进制) = 2 (十进制)
11 (二进制) = 3 (十进制)
100 (二进制) = 4 (十进制)
101 (二进制) = 5 (十进制)
110 (二进制) = 6 (十进制)
111 (二进制) = 7 (十进制)
1000 (二进制) = 8 (十进制)
1001 (二进制) = 9 (十进制)
1010 (二进制) = 10 (十进制)
1011 (二进制) = 11 (十进制)
1100 (二进制) = 12 (十进制)
好吧,来算一下吧: 二进制1100其对应的十进制值可以通过将每个位上的数乘以2的相应幂次然后相加得到。从右到左,每一位的权重分别是2的0次方、2的1次方、2的2次方、2的3次方,以此类推:
1 2^3 + 1 2^2 + 0 2^1 + 0 2^0 = 8 + 4 + 0 + 0 = 12(十进制)
注意,因为计算机存储一般是按照字节(Byte)来存储的,一个字节包含8位(bit),较小的二进制数转换为字节时,通常会在数的末尾添加足够的0,使其成为8位的整数。当然由此类推,如果二进制数是超出了8位的话,存储就会变成两个字节。比如‘110010111’从右到左数依次从低位到高位,最高位是最左边,也就是‘11001011’占第一个字节,最低位是‘1’占第二个字节存储,记得填充满8位,那就是‘00000001’。
这里的高低位是字节的知识,在多字节数据类型中,最高位就是它的第一位,最低位就是它的最后一位,通过高低位来决定字节显示的顺序,这个不是固定从高到低啥的,不同的系统和语言会使用不同的字节顺序,从低到高叫小端字节序,从高到低位叫大端字节序。