十进制和二进制的互相转换

十进制和二进制的互相转换


二进制
计算机中的数据不同于人们生活中的数据,人们生活采用十进制数,而计算机中全部采用二进制数表示,它只包含 0、1两个数,逢二进一,1+1=10。每一个0或者每一个1,叫做一个bit(比特)。 下面了解一下十进制和二进制数据之间的转换计算。

十进制8转换成二进制,结果是1000
方法:除以2得到的余数,按从下向上的顺序排序就得到了二进制的值
在这里插入图片描述

二进制100101转换成十进制,结果是37
在这里插入图片描述

在C语言中,可以编写函数来实现十进制二进制之间的互相转换。以下是两种转换的基本方法: 1. 十进制转二进制: - 最直观的方法是通过不断地除以2并取余数的方式来得到二进制表示。具体做法是将十进制数不断除以2,然后将余数倒序排列,这样就得到了二进制数。 - 另一种方法是利用C语言的库函数,如` sprintf()` 或 `__builtinbitset()`(GCC编译器特有),可以直接将十进制转换二进制字符串。 2. 二进制十进制: - 通过遍历二进制字符串(从低位到高位),将每一位的值(0或1)乘以2的幂次,然后将这些结果累加起来,得到最终的十进制数。 - 同样,也可以使用`strtol()`(字符串转换为长整型数)这样的库函数来进行转换。 以下是一个简单的C语言代码示例,分别实现了十进制转二进制二进制十进制的函数: ```c #include <stdio.h> #include <math.h> // 十进制转二进制 void DecimalToBinary(int decimal) { int binaryNum[32]; // 假设二进制数不超过32位 int i = 0; while (decimal > 0) { binaryNum[i] = decimal % 2; decimal = decimal / 2; i++; } // 打印二进制数(倒序打印数组) for (int j = i - 1; j >= 0; j--) { printf("%d", binaryNum[j]); } printf("\n"); } // 二进制十进制 int BinaryToDecimal(const char *binary) { int decimal = 0; int length = strlen(binary); for (int i = 0; i < length; i++) { decimal += (binary[i] - '0') * pow(2, length - i - 1); } return decimal; } int main() { int decimal; char binary[33]; // 假设二进制字符串不超过32位,加上结束符'\0' // 用户输入 printf("请输入十进制数: "); scanf("%d", &decimal); printf("十进制数 %d 转换二进制为: ", decimal); DecimalToBinary(decimal); printf("请输入二进制数: "); scanf("%s", binary); printf("二进制数 %s 转换十进制为: %d\n", binary, BinaryToDecimal(binary)); return 0; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值