嵌入式学习-01C语言day03

这篇博客介绍了C语言中的进制表示,包括二进制、十进制和十六进制,并讲解了如何在C语言中使用它们。接着详细探讨了整型、浮点型、字符型和布尔类型的数据类型,以及数据类型转换的规则。此外,还阐述了C语言中的运算符基础,包括算术运算符、关系运算符、逻辑运算符、位运算符和赋值运算符,以及三元运算符的使用和运算符优先级。
摘要由CSDN通过智能技术生成

day02

1 进制

1.1 常见进制

(1)二进制:0、1,满2进1。

(2)十进制:0 - 9,满10进1。

(1)十六进制:0 - 9及A-F,满16进1。十六进制中,除了 0 到 9 十个数字外,还引入了字母,以便表示超过9的值。字母A对应十进制的10,字母B对应十进制的11,字母 C、D、E、F 分别对应十进制的 12、13、14、15。

1.2 C语言中使用不同进制表示整数

(1)二进制:以0b或0B开头表示。

(2)十进制:正常数字表示。

(3)十六进制:以0x或0X开头表示,此处的A-F不区分大小写。

代码示例:

1.3 输出格式

%d :十进制整数。

%x :十六进制整数。

%#x :显示前缀 0x 的十六进制整数。

%#X :显示前缀 0X 的十六进制整数。

代码示例

#include <stdio.h>

int main()
{
   
    int x = 100;

    printf("十进制:%d \n", x);
    printf("十六进制:%x \n", x);
    printf("十六进制(0x开头):%#x \n", x);
    printf("十六进制(0X开头):%#X \n", x);

    return 0;
}

输出结果

十进制:100 
十六进制:64 
十六进制(0x开头):0x64 
十六进制(0X开头):0X64

1.4 原码、反码、补码

1)*原码*

原码的表示与机器数真值表示的一样,即用第一位表示符号,其余位表示数值。

Ø 正数的原码:就是它对应的二进制数。

Ø 负数的原码:它的绝对值对应的二进制数,且最左边位变为1。

Ø 0的原码:仍然是0。

十进制的正负1,用8位二进制的原码表示如下:

+1 原码:[ 0000 0001 ]

-1 原码:[ 1000 0001 ]

2)*反码*

Ø 正数的反码:和原码相同。

Ø 负数的反码:在其原码的基础上,符号位不变,其余各位取反。

Ø 0的反码:仍然是0。

十进制的正负1,用8位二进制的反码表示如下:

+1 原码:[ 0000 0001 ] 反码:[ 0000 0001 ]

-1 原码:[ 1000 0001 ] 反码:[ 1111 1110 ]

需要注意的是,反码通常是用来由原码求补码或者由补码求原码的过渡码。

3)*补码*

Ø 正数的补码:和原码、反码相同。

Ø 负数的补码:反码的基础上加1。

Ø 0的补码:仍然是0。

十进制的正负1,用8位二进制的补码表示如下:

+1 原码:[ 0000 0001 ] 反码:[ 0000 0001 ] 补码:[ 0000 0001 ]

-1 原码:[ 1000 0001 ] 反码:[ 1111 1110 ] 补码:[ 1111 1111 ]

4)*总结*

(1)正数的原码、反码、补码都一样,三码合一。

(2)负数的反码:它的原码符号位不变,其它位取反(0 -> 1,1 -> 0);负数的补码:它的反码+1。

(3)0的反码,补码都是0。

2 数据类型

在这里插入图片描述

2.1整型的类型

类型 存储大小 值范围
short signed short 2 字节 -32,768 (- 2^15)到 32,767 (2^15 -1)
unsigned short 2 字节 0 到 65,535 (2^16 - 1)
signed int 16位:2 字节32位:4 字节 16位:-32,768 (- 2^15 ) 到 32,767 (2^15-1)32位:-2,147,483,648 (- 2^31) 到 2,147,483,647 (2^31 -1)
unsigned int 16位:2 字节32位:4 字节 16位:0 到 65,535 (2^16-1) 32位:0 到 4,294,967,295 (2^32 -1)
long signed long 32位:4 字节 64位:8 字节 32位:-2,147,483,648 (- 2^31) 到 2,147,483,647 (2^31 - 1)64位:9223372036854775808(-2^63) 到9223372036854775807 (2^63-1)
unsigned long 4 或 8 字节 32位:0 到 4,294,967,295 (2^32 - 1)64位:0 ~ 18446744073709551615 (2^64 - 1)
long long signed long long 8字节 9223372036854775808(-2^63) 到9223372036854775807 (2^63-1)
signed long long 8 字节 0 ~ 18446744073709551615 (2^64 - 1)

关于存储大小单位:

bit(位):计算机中的最小存储单位,表示一个二进制位。

byte(字节):计算机中基本存储单元,1byte = 8bit。

2.1.1 字面量后缀

在这里插入图片描述

2.1.2 格式占位符

(1)%d 对应 int 类型,%u 对应 unsigned int 类型。

(2)%hd 对应 short 类型,%hu 对应 unsigned short 类型。

(3)%ld 对应 long 类型,%lu 对应 unsigned long 类型。

(4)%lld 对应 long long 类型,%llu 对应 unsigned long long 类型。

2.2浮点类型

类型 存储大小 值范围 有效小数位数
float 单精度 4 字节 1.2E-38 到 3.4E+38 6 ~ 9
double 双精度 8 字节 2.3E-308 到 1.7E+308 15 ~18
long double 长双精度 32位:10字节64位:16字节 32位:与 double 相同或更大64位:3.4E-4932到1.2E+4932 18或更多

2.2.1 字面量后缀

(1)浮点数字面量默认是double型,

(1)如果需要表示float类型字面量,须加后缀 f 或 F。

(2)如果需要表示long double类型字面量,需加后缀 l 或 L。

2.3字符类型

(1)char类型的字面量是用单引号括起来的单个字符。

(1)可以使用转义字符 \ 表示特殊含义的字符。

转义字符 说明
\b 退格
\n 换行符
\r 回车符
\t 制表符
\” 双引号
\’ 单引号
\ 反斜杠
2.3.1 格式占位符

使用%c表示char类型。

2.3.2 ASCII码介绍

空格“SPACE” 是32(二进制00100000)

大写的字母A是65(二进制01000001)

2.4 布尔类型

布尔值用于表示真、假两种状态,通常用于逻辑运算和条件判断。

2.4.1 布尔类型一

#include <stdio.h>

// 宏定义
#define BOOL int
#define TURE 1
#define FALSE 0

int main()
{
   
    // 使用整型表示真假两种状态
    // int isPass = 0;
    // int isOk = 1;

    // 借助于宏定义
    BOOL isPass = FALSE;
    BOOL isOk = TURE;

    printf("isPass=%d, isOk=%d \n", isPass, isOk);

    if (isPass)
    {
   
        printf("Pass");
    }

    if (isOk)
    {
   
        printf("Ok");
    }

    return 0;
}

2.4.2 布尔类型二

#include <stdio.h>

int main()
{
   
    // 使用 _BOOL 类型
    _Bool isPass = 0;
    //_Bool isOk = 1;
    _Bool isOk = -4;

    printf("isPass=%d, isOk=%d \n", isPass, isOk);

    if (isPass)
    {
   
        printf("Pass");
    }

    if (isOk)
    {
   
        printf("Ok");
    }# day03

### 1.1 **获取数据的存储大小**

使用sizeof 可以获取数据类型或变量、字面量的存储大小,单位是字节。sizeof返回一个size_t类型的无符号整数值,格式占位符是 %zu。

案例演示:

```c
#include <stdio.h>

int main()
{
   
    // 计算数据类型的大小, 必须使用括号将数据类型关键字包裹起来
    printf("char:%zu \n", sizeof(char));               // char:1
    printf("short:%zu \n", sizeof(short));             
  • 18
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

路x飞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值