目录
一,进制介绍
进制转换是学编程多多少都要掌握基础的,虽然现代有科学计算机的帮助,便于人们不用去手算,但是还是要知道换算过程。我们需要学到的有二进制、八进制、十进制、十六进制、以及它们之间的换算过程。接下来一一详细分析:
1,二进制:二进制的取值范围是0和1在计算机里所有数据都是以二进制数字在进行储存的。
在写二进制数字时要在前面加前缀0(零)b,例:
int Inum=0b100101;
2,八进制:八进制的取值范围是0~7,在写八进制数字时要加前缀0(零),例:
int Inum=0521;
3,十进制:十进制的取值范围是0~9系统默认的整型(int)输入格式就是十进制,所以不需要加前缀,例:
int Inum=5201314;
4,十六进制:十六进制的取值范围在数字0~9和A(a)~F(f)之间,在写十六进制数字时,要在开头加上前缀0(零)x,例:
int Inum=0x256oxff
二,进制转换
通常在程序中进制间的转换可以直接用计算机(程序员)直接进行计算。这里我们简单讲一下整除的情况下进制之间怎么进行换算:
1,十进制转二进制、八进制、十六进制
做法:可以用短除法,用十进制数除以2,反方向取余数,直到商为零为止
实操:
得到:9(十进制)=1001(二进制)
十进制转八进制和转十六进制方法相同,用十进制数去除以八进制或是十六进制数,直到除尽为止,在从下至上读取余数就是转换后的结果
2,十六进制转十进制
想要将(AFF5321)这样的十六进制的数转换为十进制的数要怎么操作呢?
(A=10,F=14)
转换成十进制:10×16^6+14×16^5+14×16^4+5×16^3+3×16^2+2×16^1+1×16^0 =184,505,121
换算的规律已经用不同色号区分出来
3,八进制转十进制
想要将(756452)这样的八进制的数转换为十进制的数要怎么操作呢?
转换成十进制:7×8^5+5×8^4+6×8^3+4×8^2+5×8^1+2×8^0=253,226
换算的规律已经用不同色号区分出来
4二进制转十进制
想要将(011100010100101)这样的二进制的数转换为十进制的数要怎么操作呢?
转换成十进制:0×2^14+1×2^13+1×2^12+1×2^11+0×2^10+0×2^9+0×2^8+1×2^7+0×2^6+1×2^5+0×2^4+0×2^3+1×2^2+0×2^1+1×2^0=14,501
换算的规律已经用不同色号区分出来
三,进制与储存
在前面,我们提到过,在计算机里,所有的程序都是由二进制数字表示的,我们在编写好C语言程序后,运行时电脑会把C语言程序解析成二进制数字,通过读取二进制数字从而执行任务。解析出来的二进制数字在电脑里是会占取内存的,具体占取大小、等级大小及转换如下:
数据储存与二进制:1位(b)=1个二进制位,1字节(bit)=8个二进制位
储存单位与二进制:1KB=1024B=2^10B
1MB=1024KB=2^20B
1GB=1024MB=2^30B
1TB=1024GB=2^40B
数据类型在32位系统中的占位:
四,原码、反码、补码
在计算机中只有加法没有减法,这样对有符号数据类型很不友好,所以慢慢的衍生出了反码和补码来补充早期计算机所存在的解析缺陷接下来,我们就了解一下在计算机里,二进制数字都会呈现出哪些形态。
(1)机器码:一串二进制的数字如:1001 1001 0010 0101
(2)原码:在二进制数字的基础上衍生出符号位
(3)反码:
正数反码:三码合一(不做改变)
负数反码:原码(最高位)符号位不变,其他位取反
(4)补码:
正数补码:三码合一(不做改变)
负数补码:反码加1
以上就是这一章的内容,如果内容有错误,请指出!虚心接受指点!
下一章预告:C语言入门之安装Visual Studio 2019