进制转换:
为什么使用二进制、八进制、十六进制?
由于现在的CPU只能识别高低两种电平,只能使用二进制数据进行计算
二进制虽然能够被计算机直接计算,但是不方便书写、记录,因此将数据以八进制方式为了
更方便记录在文件中随CPU位数不断增加,八进制不能满足需求,所以发展出了十六进制来表示数据。
十进制转二进制:(十进制转其他进制):
求余法:
用n对数据求余,然后再继续对商求余,知道商为0结束,过程中产生的余数就是该数据的n进制(逆序)
n %2 余数
商%2
...
例 : 将127转换成2进制
127 %2 1
63 %2 1
31 %2 1
15 %2 1
7 %2 1
3 %2 1
1 %2 1
0 0
二进制:01111111
求权法:
数据减N^(n-1) 如果可以减(不为负数),则第n位为1,否则为0
例:将106转换成二进制
106-2^6=42 1
42-2^5=10 1
10-2^4 0(不能减 )
10-2^3=2 1
2-2^2 0(不能减 )
2-2^1=0 1
0-2^0 0(不能减 )
所以106的二进制数为: 1101010
二进制转其他进制:
二进制转十进制:(其他进制转十进制)
二进制数据每位 乘2^(n-1) 结果求和
10011101 128+16+8+4+1 157
二进制转八进制:
三个二进制位转为一位八进制位
二进制 10 011 001 101 110
八进制 2 3 1 5 6
二进制转十六进制:
四个二进制位转为一位十六进制位
二进制 10 0110 0110 1110
十六进制: 2 6 6 E
c语言中进制数据表示方式
在C代码中,以0开头的数据是八进制数据,以0x开头的是十六进制数据
%o 以八进制形式显示数据
%x 以十六进制显示数据
%#o %#x 以对应的进制显示数据