文章目录
进制转换:
为什么要使用二进制、八进制、十六进制?
因为现在的CPU只能识别高低两种电流,只能对二进制数数据进行计算
二进制虽然可以直接被CPU识别计算,但是不方便书写、记录,所以把二进制的数据转换成八进制的数据是为了方便记录到文档中。随着CPU的不断发展,位数不停增加,由早期的8位逐渐发展到现在的64位,因此八进制不再能满足需求,所以发展出十六进制,由于历史原因八进制还不能完全地退出历史舞台。
十进制转二进制:(转其他进制)
求余法:
用2对数据求余,记录余数,然后继续对商求余,直到商为0结束,过程中产生的余数就是该数据的二进制(逆序)
n % 2 = 0 | 1
商 % 2 = 0 | 1
直到商为0
求权法:
从高位到低位,数据 - 2^(n-1),如果能减,第n位就是1,否则就是0
手算
79 1001111
63 111111
121 1111001
49 110001
二进制转十进制:
每位的2^(n-1)求和
10011010 128+16+8+2=154
二进制转八进制:
低位起,每三位二进制位对应一位八进制
二进制: 1 001 101 110 010
八进制: 1 1 5 6 2
二进制转十六进制:
低位起,每四位二进制对应一位十六进制
二进制: 1 1011 0111 1010
十六进制:1 B 7 A
在C语言中只要是以0开头的数据都是八进制,以0x开头的数据都是十六进制数据
%o 以八进制形式显示数据
%x 以十六进制显示数据
%#o %#x 以对应的格式显示不同进制
原码、反码、补码:
原码:
数据