二进制、八进制、十进制、十六进制

本文深入讲解了二进制、八进制、十进制及十六进制的基本概念,通过具体的加法和减法实例,帮助读者理解不同进制间的转换与运算规则。

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

首先什么是进制呢--》进制也就是进制位

进制分为二进制(由0、1组成)、八进制、十进制、十六进制(加法就是满X进一,减法就是借一当X)

八进制加法:3+4=7,5+6=13

八进制减法:6-4=2,52-27=23

十六进制加法(十六进制A-10,B-11,C-12,D--13,E-14,F-15):6+7=D,18+BA=D2

十六进制减法:D-3=A,52-2F=23

### 进制表示方式 在C语言中,不同进制的整数可以通过特定前缀或后缀进行表示: - **二进制(Binary)**:C语言标准不直接支持二进制常量的写法,但某些编译器(如GCC)扩展支持 `0b` 前缀,例如 `0b1010` 表示十进制的10。 - **八进制(Octal)**:使用 `0` 前缀,例如 `012` 表示十进制的10。 - **十进制(Decimal)**:默认形式,无特殊前缀,例如 `10`。 - **十六进制(Hexadecimal)**:使用 `0x` 或 `0X` 前缀,例如 `0xA` 表示十进制的10[^1]。 ```c #include <stdio.h> int main() { int binary = 0b1010; // GCC 扩展支持二进制 int octal = 012; // 八进制 int decimal = 10; // 十进制 int hex = 0xA; // 十六进制 printf("Binary: %d\n", binary); printf("Octal: %d\n", octal); printf("Decimal: %d\n", decimal); printf("Hexadecimal: %d\n", hex); return 0; } ``` ### 进制转换方法 #### 十进制转其他进制 可以使用递归或循环的方式将十进制数转换为其他进制。例如,以下程序使用递归实现十进制二进制的转换: ```c #include <stdio.h> void change(int n, int base) { if (n > 0) { change(n / base, base); printf("%d", n % base); } } int main() { int n = 25; int base = 2; change(n, base); printf("\n"); return 0; } ``` 若要转换为八进制十六进制,只需修改 `base` 参数为8或16即可[^1]。 #### 其他进制转十进制 对于输入的字符串形式的二进制八进制十六进制数据,可以通过逐位计算将其转换为十进制。例如,以下是二进制字符串转十进制的实现: ```c #include <stdio.h> int main() { int d = 0; char ch; while ((ch = getchar()) != '\n') { d = d * 2 + (ch - '0'); } printf("%d\n", d); return 0; } ``` 类似地,若要将八进制十六进制字符串转换为十进制,只需将乘数改为8或16,并处理对应的字符范围即可。 #### 使用标准库函数进行进制转换 C语言标准库 `<stdlib.h>` 提供了 `strtol` 和 `strtoul` 函数用于将字符串转换为长整型或无符号长整型数值,同时支持指定进制: ```c #include <stdio.h> #include <stdlib.h> int main() { const char *binary_str = "1010"; const char *octal_str = "12"; const char *hex_str = "A"; long binary_val = strtol(binary_str, NULL, 2); long octal_val = strtol(octal_str, NULL, 8); long hex_val = strtol(hex_str, NULL, 16); printf("Binary to Decimal: %ld\n", binary_val); printf("Octal to Decimal: %ld\n", octal_val); printf("Hexadecimal to Decimal: %ld\n", hex_val); return 0; } ``` 该方法适用于任意进制字符串向十进制整数的转换,并具有良好的可读性和安全性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值