信盈达—您身边的嵌入式&人工智能专家
全国免费咨询热线:400-8788-909

C语言中的进制及内存分析详解

时间:2018-08-17 00:00:00 来源:信盈达 作者:信盈达

进制及内存分析

二进制:0b或者0B开头  ----逢二进一   0101

 

八进制:0开头             ----逢八进一   01234567

 

十进制:直接写            ----逢十进一   0123456789

 

十六进制:0x0X开头  ----逢十进一   0-9 A B C D E F (内存的地址格式)

 

进制的打印输出:

 

%o:表示输出不带符号八进制整数

 

%x:表示输出不带符号十六进制整数

 

%d:表示输出有符号十进制整数

 

%u:表示输出不带符号十进制整数

 

注意:

 

二进制不可以直接输出.

有符号与无符号区别:有符号可以有负数表现(: - 2)  

进制互换  

 

三个要素:

 

数位(0-7)

 

基数(每一位能取值的个数)

 

位权(数码*基数^数位)101 = 1*2^0+0*2^1+1*2^2

 

数码(每一位是1还是0)

 

转换:有得时候转换为人能识别的数制,要操作计算机写计算机能够识别的语言(二进制)

 

10 -> 2 : 2取余法,10进制数除以2,然后取得余数的序列,再倒序

 

2 -> 10 : 所有位的位权相加 101 = 1*2^0+0*2^1+1*2^2

 

2 --> 16 : 41, 整数部分从右向左 4位结合成一位,小数部分从左向右4位结合1, 不足部分补0

 

16 -->2: 14, 16进制的1位拆成二进制的4

 

2-->8 8-->2:31 :13

 

 

 

8 --> 10 : 8--> 2 --> 10

 

16 --> 10: 16 -->2 -->10

 

3、原码、反码和补码

 

1)机器码、真值

 

一个数的二进制的表示 机器码

 

把一个数的二进制转换为10进值得值 真值

 

2)计算数据的存储

 

存储的时数的补码 数是有正负性

 

正数:最高位 用0表示符号位

 

负数:最高位 用1表示符号位

 

3)原码、反码、补码:

 

正数:就是其二进制表示                +100000001

 

负数:二进制的最高位是1              -1 11111110

 

反码:

 

正数:就是其二进制表示                +100000001

 

负数:符号位不变,其他位逐位取反    -1 11111110

 

补码:

正数:就是其二进制表示               +1 00000001

 

负数:反码+1                             -1 11111111

 

注意:补码的真值不等于原码的真值的

 

4、为什么要使用补码?

 

主要是位了优化计算机中的减法

 

5、补码的深入讲解

 

1-1 = 1+(-1)  

 

数据取值范围

 

.基本数据类型取值范围---超出取值范围数据会定义失败.