C语言基础 进制的转换

本文介绍了C语言中基础的进制转换,包括十进制、二进制、八进制和十六进制之间的转换,并探讨了计算机为何使用二进制存储数据的原因。同时,讲解了数据的存储方式,如原码、反码和补码,以及它们在内存中的表示。此外,还讨论了常量、变量的概念、标识符规则以及变量的声明、赋值和初始化。最后,提到了不同类型的变量,包括整型、字符型和浮点型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


一、进制转换(掌握)

十进制:基数:0~9  逢十进一

123 = 100+20+3

二进制:基数:0 1 逢二进一

0001  1

0010  2

(1)十进制数转换成二进制数

除2取余,余数倒序写

 

6—>0110

(2)二进制数转换为十进制数

 

0110   0*1+1*2+1*4=6

 

八进制数 基数0~7 逢8进一

023 -> 2*8 + 3*1=19

(3)八进制数转为二进制数

023

 010011 

(4)二进制数转换为八进制数

10101110 

256

 

十六进制数:基数:0~9 A~F,逢十六进一

0x23 3+2*16=35

(5) 十六进制转换为二进制

0x23 -> 0010 0011

(6)二进制转换为十六进制

10110001010    ->58A 

 

程序中多使用十进制和十六进制,为什么?

比二进制简短

 

为什么计算机中的数据是以二进制方式存储的?

1、硬件设计简单

2、稳定性比较高

3、符合生活逻辑

 

二、数据的存储(了解)

1、原码、反码、补码

三种编码方式都是以二进制形式存储。

以8位二进制位为基准,左边是高位,右边是低位。

00011001

(1)原码

   最高位为符号位

   正数:符号位为0

   负数:符号位为1

(2)反码

   正数:与原码一样

   负数:符号位不变,其余位按位取反(0变成1,1变成0)

(3)补码

   正数:与原码和反码一样,三码合一

   负数:反码加1

 

1 和 -1

1 0000 0001

-1原码 1000 0001

    反码 1111 1110

    补码 1111 1111

1+(-1)

0000 0001

1000 0001

1000 0010

 

0000 0001

1111 1110

1111 1111

 

0000 0001

1111 1111

0000 0000

【扩展】溢出(正常和不正常),跟数据的存储范围有关系。

 

为什么程序中的数据采用补码的方式存储?

(1)将减法运算转换为加法运算,简化硬件设计

(2)使符号位参与运算,无需单独考虑。

 

整数在计算机中采用什么方式存储?

补码

计算机中的所有数据都是采用补码方式存储的吗?

不准确

 

2、内存中的数据

一个内存单元有 8个二进制位,也就是一个字节。

使用从0开始的连续的正数给内存单元编号,通过编号来访问内存单元。这个编号称为地址。

 

为什么不采用地址编号的方式访问内存单元?

(1)地址书写比较繁琐,而且容易出错

(2)很多时候我们不清楚,哪些地址可以使用

 

可以给某段存储空间取一个名字,然后通过名字来访问。

 

三、常量与变量(掌握)

1、定义:

常量:程序运行过程中,其值不能改变的量。

变量:程序运行过程中,其值可以改变的量。

变量的本质:具有名字的一块内存单元,用于存储可变的数据。

2、标识(zhi)符 identifier ID

(1)只能由数字、字母、下划线组成。

(2)首字符不能是数字

(3)不能使用关键字、保留字

(4)区分大小写

 

下面哪些标识符是合法的?

int 9a _a9 *bc_ 

ab_ AB_ 不等价

 

3、变量的声明、赋值、初始化

声明:类型 变量名;

赋值:   变量名 =(赋值运算符 )变量对应类型的值;

初始化: 类型 变量名 =(赋值运算符 )变量对应类型的值;

 

【注意】

(1)变量必须先声明,后使用。

(2)定义一个变量,如果不赋初值,其值不确定。

(3)变量可以反复赋值,其有效值为最后一次的赋值。

4、变量的类型

(1)整型

          signed int 整型变量 4个字节 16位系统 2个字节

          short (int)  短整型变量 2个字节

          long (int) 长整型变量 32位系统 4个字节

          64位 8个字节

          long long 超长整型 8个字节

          

          上面的每种整型,都有对应的无符号版本,前面加unsigned 

          unsigned int

(2)字符型

char (character) 

unsigned char

字符型在内存中是以ASCII码方式进行存储的。

 

字符型变量的声明和初始化

 

 【注】其实char也是整型,只不过占用一个字节。

 

【扩展】字符型常量

257

‘\n’

‘\0’

’n’

‘0’

“a”

 

(3)浮点型(小数)

float 单精度浮点数:范围:精确到有效数字6~8位(近似值,不确定)占用4个字节

 

double  双精度浮点数:范围:精确到有效数字13~18位有效数字(近似值,不确定)占用8个字节

      

(4)读取和打印变量的值

【读取】

格式化输入函数:scanf

格式:scanf(“格式控制符”,地址列表);

&:获取变量的地址

 

练习:从键盘输入一个整数,然后打印出来

 

【注意】

(1)scanf里面不能写字符,只能写格式化控制符

(2)输入的时候,整型%d之间可以有空格,字符型%c之间不能有空格。

 

【输出】

printf函数

格式:printf(“格式控制/格式控制符(%d...)”,数据列表);

格式控制部分原样输出,直到遇到%,一个%对应后面一个数据。

 

格式控制符

%d 十进制整数

%x 十六进制

%c 字符型

%f 单精度浮点型

%lf 双精度浮点型

%s 字符串

’n’’\n’

\n 换行

\t  制表符 tab键

 

保留小数点后两位

%.2f

%.2lf


 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值