C语言一个的16位二进制数数组,首位2位和末2位不要
时间: 2023-11-22 09:54:58 浏览: 40
假设给定的16位二进制数数组为 `bits`,可以用以下代码将其首位2位和末2位去掉:
```c
#include <stdio.h>
int main() {
int bits[16] = {1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1}; // 示例输入
int result[12]; // 存储结果的数组,长度为16-2-2=12
int i;
for (i = 2; i < 14; i++) { // 从第3位到第13位(共11位)复制到结果数组中
result[i-2] = bits[i];
}
for (i = 0; i < 12; i++) { // 输出结果数组
printf("%d", result[i]);
}
return 0;
}
```
输出结果为 `101100101100`。
相关问题
四位二进制数数组转十进制C语言代码
下面是将四位二进制数数组转换为十进制的C语言代码:
```
#include <stdio.h>
int main()
{
int binary[4] = {1, 0, 1, 1}; // 二进制数数组
int decimal = 0; // 十进制数
// 将二进制数数组转换为十进制数
for (int i = 0; i < 4; i++)
{
decimal += binary[i] * (1 << (3 - i));
}
printf("%d\n", decimal); // 输出十进制数
return 0;
}
```
这里我们假设二进制数数组是{1, 0, 1, 1},即十进制数11的二进制表示。我们使用一个循环遍历二进制数数组的每一位,如果该位为1,则将2的幂次方加到十进制数上。例如,对于数组中的第一位1,我们将2的3次方加到十进制数上,即1 * 2^3 = 8。最终得到的十进制数为11。
C语言位运算十进制转二进制数组进行加法
这里是一个简单的示例程序,使用位运算将两个十进制数转换为二进制数组,然后进行加法操作。假设我们要将10和5相加:
```c
#include <stdio.h>
int main() {
int num1 = 10; // 第一个加数
int num2 = 5; // 第二个加数
// 将num1和num2转换为二进制数组
int bin1[32] = { 0 };
int bin2[32] = { 0 };
int i = 0;
while (num1 > 0) {
bin1[i] = num1 % 2;
num1 /= 2;
i++;
}
i = 0;
while (num2 > 0) {
bin2[i] = num2 % 2;
num2 /= 2;
i++;
}
// 进行加法操作
int carry = 0; // 进位标志
int result[32] = { 0 }; // 存放加法结果的数组
for (i = 0; i < 32; i++) {
int sum = bin1[i] + bin2[i] + carry;
if (sum >= 2) {
carry = 1;
result[i] = sum - 2;
} else {
carry = 0;
result[i] = sum;
}
}
// 输出结果
printf("10 + 5 = ");
for (i = 31; i >= 0; i--) {
printf("%d", result[i]);
}
printf("\n");
return 0;
}
```
输出结果为:
```
10 + 5 = 1111
```
可以看到,程序将10和5分别转换为二进制数组,然后进行加法操作,最终得到了15的二进制表示。在这个过程中,我们使用了位运算来实现二进制转换和加法操作。