Skip to content

Commit

Permalink
小修改
Browse files Browse the repository at this point in the history
  • Loading branch information
VinbeWan committed Aug 10, 2024
1 parent c491739 commit c53b86b
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 12 deletions.
25 changes: 13 additions & 12 deletions 教程/正文/语法和标准库/34_位操作.md
Original file line number Diff line number Diff line change
Expand Up @@ -96,10 +96,13 @@
#include <stdint.h>
```

或者,也可以使用 `typedef` 定义一个无符号整数类型,如下:
或者,也可以使用 `typedef` 定义一些无符号整数类型,如下:

```C
typedef unsigned int uint_t;
typedef unsigned long long uint64_t;
typedef unsigned int uint32_t;
typedef unsigned short int uint16_t;
typedef unsigned char uint8_t;
```

示例中的 **二进制字面量** 只有 **8** 位,这其实没什么问题,因为二进制位数是由类型决定的,而不是字面量的位数,因此,**字面量位数** 可以比 **该字面量类型位数** 少,也可以比 **该字面量类型位数** 多。但需要注意的是,二进制存储是 **从右往左** 的,因此,如果 **字面量位数****该字面量类型的位数** 多,那么,字面量左边的位会被丢弃,如下:
Expand All @@ -120,12 +123,12 @@ uint_t flag = 0b1111111100000000000000000000000000000000;
- 下面举个简单的例子:

```C
typedef unsigned char ubyte;
//typedef unsigned char uint8_t;

ubyte flag = 0b10101010;
uint8_t flag = 0b10101010;

//定义MASK,0号位为1,其余位为0
ubyte mask = 0b00000010;
uint8_t mask = 0b00000010;

//掩码操作
flag = flag & mask; //此时 flag = 0b00000010
Expand All @@ -137,7 +140,7 @@ uint_t flag = 0b1111111100000000000000000000000000000000;
- 以上一节的 **mask**(只有 `1` 号位为 1)为例:

```C
ubyte flag = 0b10101001;
uint8_t flag = 0b10101001;
flag |= mask; //此时 flag = 0b10101011
```

Expand All @@ -149,7 +152,7 @@ uint_t flag = 0b1111111100000000000000000000000000000000;
- 以上一节的 **mask**(只有 `1` 号位为 1)为例:

```C
ubyte flag = 0b10101011;
uint8_t flag = 0b10101011;
flag &= ~mask; //此时 flag = 0b10101001
```

Expand All @@ -161,7 +164,7 @@ uint_t flag = 0b1111111100000000000000000000000000000000;
- 以新的 **mask**(`0b11110000`)为例:

```C
ubyte flag = 0b10101011;
uint8_t flag = 0b10101011;
flag ^= mask; //此时 flag = 0b01011011
```

Expand All @@ -172,10 +175,8 @@ uint_t flag = 0b1111111100000000000000000000000000000000;
- 使用 `&` 运算符和掩码,代码如下:
- 以上一节的 **mask**(只有 `1` 号位为 1)为例:

```C
//typedef unsigned int uint_t;

uint_t flag = 0b10101011;
```C
uint8_t flag = 0b10101011;
if ((flag & mask) == mask) {
printf("1号位为1。");
}
Expand Down
36 changes: 36 additions & 0 deletions 教程/正文/项目/78_工具.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# 实用工具的使用

## 1. 远程连接

### 1.1 FTP客户端

- [FileZilla](https://filezilla-project.org/)
- [WinSCP](https://winscp.net/eng/index.php)

### 1.2 SSH工具

- [MobaXterm](https://mobaxterm.mobatek.net/)
- [XShell](https://www.netsarang.com/zh/xshell/)
- [PuTTY](https://www.putty.org/)
- [Termius](https://termius.com/)
- [FinalShell](http://www.hostbuf.com/)

## 2. 工具链

### 2.1 定义
- 一般包含:编译器、汇编器、链接器、调试器、解释器、加载器
- 交叉编译的定义:编译器在一种平台上编译出另一种平台上的可执行程序

### 2.2 安装

在Win平台上,有很多优秀的开源工具链
- [MinGW](https://www.mingw-w64.org/doku.php)
- [Cygwin](https://www.cygwin.com/)
- [MSYS2](https://www.msys2.org/)

## 3. Git

[ **Git** ](/教程/正文/项目/1_Git的使用.md)

## 4. 自动化构建工具

0 comments on commit c53b86b

Please sign in to comment.