计算机的组成单位:
计算机中最小的单位是比特bit(包含0和1),最小的存储单位是字节,而一个字节等于八个比特位,1kb等于1024个字节,以此类推向上。。。
首先概述一下各个进制的表示方法:
二进制,由0和1组成,逢二进一,c语言无法直接表示二进制;八进制,由0~7总共八个数字组成,特点是逢八进一,c语言中表示八进制的方法是在数字的开头加0;十进制,逢十进一由0~9组成,正常的数字表示方法;十六进制,逢十六进一,由0~F总共十六个数字加字母组成,c语言中表示该进制的方法为在其前面加上0X。
各进制间转换(15):
二进制~八进制:
15用二进制表示为:0000 1111,而用八进制表示则为017。八进制转换为二进制的方法为:一个八进制对应于3个二进制,也就是说017分别对应于:- - -,- - -。现在,随便选一个八进制数字025为例:(前面的0不考虑在内,只是一个识别符),第一个2对应的二进制为010,第二个5对应的二进制为2**2 + 2**0(对应于1号位和3号位),也就是101,所以,转换为二进制就变成了:0001 0101。反之,二进制转换为八进制,随机选一个数字1101000110,由于一个八进制对应于3个二进制,所以我们先对数字进行相应的分割(从右向左,不足添0):001 101 000 110,各自对应的数字应为:2**0, 2**2+2**0,0,2**2+2**1,于是我们得到的结果为八进制数字就为:01506
二进制~十六进制:
1个十六进制对应于4个二进制,一样来个栗子:十六进制数字0X25F,各自拆开对应:- - - -, - - - -, - - - -,2对应于2**1:0010,5对应于2**2+2**0:0101, F对应于2**3+2**2+2**1+2**0:1111,所以我们得到的二进制结果为:0010 0101 1111。同样,十六进制转换为二进制的操作只需要你过来运行就ok。
八进制~十六进制:
这个转换的话,需要用二进制作为中间的桥梁方便运算。
十进制的运算也十分类似。。。
这篇文章写得很详细:https://blog.csdn.net/shanshan1yi/article/details/49518759