gpt4 book ai didi

C语言中进制知识汇总

转载 作者:qq735679552 更新时间:2022-09-27 22:32:09 25 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章C语言中进制知识汇总由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

1.什么是进制 。

进制是一种计数的方式,常用的有二进制、八进制、十进制、十六进制。任何数据在计算机内存中都是以二进制的形式存放的.

我对进制的个人理解,二进制数是以2为计算单元,满2进1位的数;八进制数是以8为计算单元,满8进1位的数.

对于任何一个数字,我们都可以用不同的进制来表示,比如,十进制数12,用二进制表示为1100,用八进制表示为14,用十六进制表示为0xC.

2.进制的转换规则 。

遵循满进制值进1位,个位数变为0的原理,下面我们以十进制数18为例,对1-18中每一个数值转换各种进制做一个详细说明 。

转二进制

1小于2,无需进1位,1的二进制值是1 。

2为二进制值1后面一个数,由于1+1满2,需要进1位,个位数变为0,所以2的二进制值是10 。

3为二进制值10后面一个数,由于11的个位数1小于2,无需进1位,所以3的二进制值是11 。

4为二进制值11后面一个数,由于11的个位数1+1满2,需要进1位,而二进制值11的位数1+1又满2,所以位数加1,最终转换结果为100 。

转换思路:二进制值11+1 ->10+(1+1)(个位等于2,进1位,个位数变为0) ->(1+1)+0(位数满2,进1位) -> 100 。

以此类推,最终十进制数18的二进制转换结果是10010 。

转八进制:

1-7小于8,无需进1位,1-7的八进制由1-7表示 。

8为八进制值7后面一个数,由于7+1满8,需要进1位,个位数变为0,所以8的八进制值是10 。

以此类推,最终十进制数18的八进制转换结果是22 。

转十六进制 。

十六进制中,个位数1-15分别为1 2 3 4 5 6 7 8 9 a b c d e f (a=10....f=15) 。

16为十六进制值c后面1个数,由于c+1满16,需要进1位,个位数变为0,所以16的十六进制是10.

最终十进制数18的十六进制转换结果是12 。

详细结果如下图所示(C语言把数字前面加0x的数认为是十六进制数) 。

C语言中进制知识汇总

3.C语言中int类型进制的声明以及占位符 。

虽然以下3个变量的赋值方式不同,但实际赋值结果都是18 。

  。

复制代码 代码如下:
//二进制类型数字加0b int number1 = 0b10010; //八进制类型数字加0 int number2 = 022; //十六进制类型数字加0x int number3 = 0x12;

八进制占位符:%o 。

十六进制占位符:%x 。

4.内存存储数据细节 。

我们知道,int类型数据占据4个字节,1个字节是8bit。并且任何数据在计算机内存中都是以二进制的形式存放的,所以内存需要用32个0或1来描述1个int类型数据.

由于18的二进制数是10010,我们将一个int类型变量赋值18,本质上是将这个变量的内存地址对应的32个bit位修改为

0000 0000 0000 0000 0000 0000 0001 0010(未满31位,后面的数字用0填充:为什么是31而不是32呢,后面会介绍) 。

假设我们定义两个变量 。

?
1
2
3
4
5
6
//二进制类型数字加0b
   int number1 = 0b10010;
   //八进制类型数字加0
   int number2 = 022;
   //十六进制类型数字加0x
   int number3 = 0x12;

计算机会根据内存地址以由大到小的顺序进行分配内存空间,具体如下图所示:

C语言中进制知识汇总

5.进制的转换公式 。

二进制转十进制 。

0b1100 ->0*2的0次方 + 0*2的1次方 + 1*2的2次方 + 1*2的3次方 = 12 。

十进制转二进制 。

67 ->64+2+1 ->2的6次方+ 2的1次方 + 2的0次方 = 0b1000011 。

6.进制的其他知识 。

1.n位二进制能保存的整数范围公式:2的n次方-1 。

例如,3位的二进制数最大值为111,对应的十进制数字为7;5位的二进制数最大值为11111,对应的十进制数字为(2*2*2*2*2)-1 = 31.

2.负数的二进制保存规则是最左边的数字是1。例如,0000 0000 0000 0000 0000 0000 0001 0010 表示正整数,1111 1111 1111 1111 1111 1111 1110 1101表示负数 。

由此,我们就能推测出,int类型能保存的最大整数是2的(32-1)次方-1 =2147483647。为什么要用32-1,很简单,32个bit中,必须抽1个bit位用来描述这个数字是正数还是负数.

最后此篇关于C语言中进制知识汇总的文章就讲到这里了,如果你想了解更多关于C语言中进制知识汇总的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com