当前位置: 首页 > article >正文

10.17学习

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.kler.cn/news/353683.html

相关文章:

  • C语言双向链表操作
  • I\O进程线程(Day29)
  • leetcode力扣刷题系列——【最小元素和最大元素的最小平均值】
  • uniapp vue3 watch监听使用情况
  • 【微服务】深入探讨微服务架构:现代软件开发的变革之路
  • 【Postgresql】根据响应数据反向实现建表语句与insert语句
  • C++11 wrapper装饰器 bind+function
  • 【服务器知识】Tomcat简单入门
  • 10月17日,每日信息差
  • Leetcode 最小栈
  • 小白投资理财 - 中国股票代号
  • NVIDIA Bluefield DPU上的启动流程4个阶段分别是什么?作用是什么?
  • 机器学习——主要分类
  • 2024软件测试面试大全(答案+文档)
  • Springboot 整合 Java DL4J 实现安防监控系统
  • 前端布局,y轴超出滚动、x轴超出展示方案
  • 全金属的两足机器人钢铁侠开发
  • [山河2024] week2
  • 基于机器学习的心脏病风险评估预测系统
  • JavaScript获取array中相同key的平均值