10.17学习

embedded/2024/10/17 23:36:09/

1.二进制

二进制是一种基数为2的数制,它只使用两个数字:0和1。二进制数在计算机科学和数字电路中非常常见,因为它们可以很容易地被电子设备处理。

①二进制数的书写:

二进制数通常由一串0和1组成,例如: 1011 、 1101 。

②二进制数的位:

二进制数中的每一位称为一个“比特”(bit),它是二进制数的最小单位。

从右向左数,第一位是最低有效位(Least Significant Bit,LSB),最后一位是最有效位(Most Significant Bit,MSB)。

③二进制数的位权:

每一位的值取决于它的位置,每一位的值是2的幂次方,从0开始。

例如,在二进制数 1011 中:

最右边的位(LSB)是2^0 = 1。

接下来的位是2^1 = 2。

再接下来的位是2^2 = 4。

最左边的位(MSB)是2^3 = 8。

④二进制数的表示:

二进制数可以表示整数和分数。

整数的表示:每一位上的数字乘以其位权,然后求和。例如,二进制数 1011 表示的十进制数是1 \times 2^3 + 0 \times 2^2 + 1 \times 2^1 + 1 \times 2^0 = 8 + 0 + 2 + 1 = 11。

分数的表示:二进制分数使用小数点后的位置,每一位的值是2的负幂次方。例如,二进制数 0.101 表示的十进制数是1 \times 2^{-1} + 0 \times 2^{-2} + 1 \times 2^{-3} = 0.5 + 0 + 0.125 = 0.625。

⑤二进制数的前缀:

在编程和文档中,二进制数通常用前缀 0b 或 0B 来表示,以区分其他进制的数。例如: 0b1011 。

 

2.二进制转换

二→八

八进制数的每一位正好对应二进制数的三位。

①从右向左分组:首先,从二进制数的最右边开始,将二进制数字每三位分为一组。如果最左边的组不足三位,可以在前面补零,直到这组也包含三位。

②转换每组为八进制:然后,将每组三位二进制数转换为对应的八进制数。二进制的000到111分别对应八进制的0到7。

注:

二进制的 000 对应八进制的 0 

二进制的 001 对应八进制的 1 

二进制的 010 对应八进制的 2 

二进制的 011 对应八进制的 3 

二进制的 100 对应八进制的 4 

二进制的 101 对应八进制的 5 

二进制的 110 对应八进制的 6 

二进制的 111 对应八进制的7

③组合八进制数:最后,将转换后的八进制数字组合起来,就得到了最终的八进制数。

 

eg:将二进制数 11010110 转换为八进制数:

step1分组:首先,我们从右向左将二进制数分组,每三位一组:

 110 101 10 (注意最左边的组如果不足三位,我们在前面补零,变成 011 010 110 )

step2 转换:然后,我们将每组二进制数转换为对应的八进制数:

 011 (二进制)=  3 (八进制)

 010 (二进制)=  2 (八进制)

 110 (二进制)=  6 (八进制)

step3 组合:最后,我们将这些八进制数字组合起来,得到最终的八进制数:

 326 (八进制)

所以,二进制数 11010110 转换为八进制数是 326 。

 

3.进制在c中的使用

在C语言中,进制转换通常涉及到将数字从一个进制转换为另一个进制。进制是指数字系统的基数,常见的进制包括:

1. 二进制(Binary):基数为2,使用0和1两个数字。

2. 八进制(Octal):基数为8,使用0到7的数字。

3. 十进制(Decimal):基数为10,使用0到9的数字。

4. 十六进制(Hexadecimal):基数为16,使用0到9以及A(10)、B(11)、C(12)、D(13)、E(14)、F(15)的字母。

在C语言中,可以使用以下方法进行进制转换:

 

①字符串格式化输出:使用 printf 函数的格式说明符来实现进制转换。

 %d  或  %i :十进制整数

 %o :八进制整数

 %x  或  %X :十六进制整数( %x 使用小写字母, %X 使用大写字母)

 

示例代码:

int num = 255;

printf("十进制: %d\n", num);

printf("八进制: %o\n", num);

printf("十六进制: %x\n", num);

 

②使用库函数:C语言标准库提供了一些函数来进行进制转换,如 strtol 和 strtoul 等,这些函数可以将字符串转换为指定进制的数值。

示例代码:

 

#include <stdlib.h>

 

char *str = "1A3"; // 假设这是一个十六进制数的字符串

int base = 16; // 指定转换的进制

long int value = strtol(str, NULL, base); // 将字符串转换为十进制数

printf("转换后的十进制数为: %ld\n", value);

 

③手动转换:通过编写算法手动实现进制转换,例如,将十进制数转换为二进制、八进制或十六进制数。

示例代码(十进制转二进制):

 

#include <stdio.h>

 

void decimalToBinary(int decimal) {

int binary[32], i = 0;

while (decimal > 0) {

binary[i++] = decimal % 2;

decimal = decimal / 2;

}

printf("二进制: ");

for (int j = i - 1; j >= 0; j--) {

printf("%d", binary[j]);

}

printf("\n");

}

 

int main() {

int num = 13;

decimalToBinary(num);

return 0;

}


http://www.ppmy.cn/embedded/128298.html

相关文章

如何给VS2022的代码背景插入好看的图片呢?

目录 效果展示操作步骤 效果展示 在代码编辑区中插入了自己喜欢的图片&#xff01;&#xff01;&#xff01; 操作步骤 步骤1&#xff1a;步骤2&#xff1a;搜索&#xff1a;ClaudiaIDE步骤3&#xff1a;步骤4&#xff1a;步骤5&#xff1a;步骤6&#xff1a;可以选择自己喜欢…

机器学习:序列模式算法的原理、应用场景及优缺点介绍

一、序列模式算法概述 序列模式挖掘是数据挖掘的一个重要分支&#xff0c;主要用于发现数据集中的序列模式&#xff0c;即按照时间或其他顺序排列的事件模式。 二、AprioriAll算法&#xff08;基于Apriori思想的序列模式挖掘算法&#xff09; 原理 频繁序列生成&#xff1a;类…

【AWS AMI跨境备份】跨境使用 S3 备份和还原 AMI 镜像

文章目录 一、实验场景二、实验目标三、实验架构图四、涉及到AWS服务五、演示操作5.1 创建EC2实例5.2 创建映像5.3 备份AMI至Global S35.4 复制AMI从Global S3至 CN S35.5 还原AMI5.6 测试AMI 六、参考链接 一、实验场景 将 AWS Global区域的EC2实例备份至 AWS CN区域。 备份…

前端发送了请求头的参数,经debug发现后端请求对象请求头中没有该参数

debug测试&#xff0c;发现前端发来请求头中确实没有找到添加的请求头参数&#xff0c;但是 Network 中却显示请求头中有该参数信息。 原因是RequestHeaders中设置的请求参数含有下划线&#xff0c;NGINX将静默地丢弃带有下划线的HTTP标头&#xff0c;这样做是为了防止在将头映…

HTTP 协议详解

HTTP 协议是 Web 的基石&#xff0c;它定义了客户端和服务器之间的通信规则。本文将深入地探讨 HTTP 的核心概念&#xff0c;包括工作原理、请求方法、状态码以及不同 HTTP 版本的演进。 一、HTTP 的工作原理 HTTP 协议基于客户端-服务器模型&#xff0c;遵循请求-响应的循环&…

【C语言教程】【常用类库】(十七)国际化与本地化 - <locale.h>

17. 国际化与本地化 - <locale.h> 国际化&#xff08;Internationalization, i18n&#xff09;和本地化&#xff08;Localization, l10n&#xff09;涉及对软件的设计与实现&#xff0c;以支持多种语言和地区的格式与习俗&#xff0c;使程序适应不同语言、文化的需求。 …

Hadoop集群基础搭建

目录 一.虚拟机安装 1.配置虚拟机的ip 2.配置本机的ip 3.新建虚拟机 4.克隆三台虚拟机 二.虚拟机网络配置 1.修改ip配置 2.配置主机名和主机映射 3.配置SSH免密登陆 三.安装JDK 1.tar命令解压JDK安装包 2.配置JDK的环境变量 四.安装Hadoop 1.tar命令解压Hadoop安…

[含文档+PPT+源码等]精品基于springboot实现的原生Andriod临期食品交易系统

基于Spring Boot实现的原生Android临期食品交易系统的背景可以从技术背景、社会与经济背景以及系统开发的必要性三个方面进行详细阐述&#xff1a; 一、技术背景 Spring Boot框架的优势&#xff1a; 快速开发&#xff1a;Spring Boot通过自动配置和简化依赖管理&#xff0c;显…