负数二进制转成十进制C语言代码
时间: 2023-10-30 20:12:10 浏览: 102
以下是将负数二进制转换为十进制的C语言代码:
```c
#include <stdio.h>
#include <math.h>
int main() {
int binary[] = {1, 0, 1, 1, 1, 1, 1, 1}; // 负数二进制,最高位为符号位
int length = sizeof(binary) / sizeof(binary[0]); // 数组长度
int decimal = 0;
for (int i = length - 1; i > 0; i--) { // 从高位到低位遍历二进制数
if (binary[i] == 1) { // 如果该位为1,则加上2的幂次方
decimal += pow(2, length - 1 - i);
}
}
if (binary[0] == 1) { // 如果符号位为1,则表示负数
decimal = -decimal;
}
printf("十进制数为:%d\n", decimal);
return 0;
}
```
本代码假设负数二进制的最高位为符号位,代码中的二进制数为-127。通过遍历二进制数的每一位,将每一位的权值相加,最后根据符号位确定正负号。在本例中,负数二进制的最高位为1,表示负数,因此将计算结果取负数。输出结果为-127的十进制表示。
相关问题
负数十进制转二进制c++
以下是负数十进制转二进制的C语言代码:
```c
#include <stdio.h>
int main() {
int n, i, j, k;
int binary[32];
printf("输入一个负数十进制数:");
scanf("%d", &n);
// 将负数转换为补码表示
n = ~n + 1;
// 将补码转换为二进制表示
for (i = 0; i < 32; i++) {
binary[i] = n % 2;
n /= 2;
}
// 去掉高位的0
for (i = 31; i >= 0; i--) {
if (binary[i] == 1) {
break;
}
}
// 输出二进制表示
printf("二进制表示为:");
for (j = i; j >= 0; j--) {
printf("%d", binary[j]);
}
printf("\n");
return 0;
}
```
该程序先将负数转换为补码表示,然后将补码转换为二进制表示,最后去掉高位的0并输出二进制表示。
使用c语言将一个负数从十进制转换成二进制
下面是将一个负数从十进制转换为二进制的 C 语言代码:
```c
#include <stdio.h>
void decimalToBinary(int n) {
if (n == 0) {
printf("0");
return;
}
int binary[32] = {0};
int i = 0;
while (n != 0) {
binary[i++] = n % 2;
n = n / 2;
}
printf("1");
for (int j = i - 1; j >= 0; j--) {
if (binary[j] == 0) {
printf("1");
} else {
printf("0");
}
}
}
int main() {
int n = -10;
printf("The binary representation of %d is: ", n);
decimalToBinary(-n);
printf("\n");
return 0;
}
```
这个程序将输入的负数取绝对值后,将其转换为二进制形式。由于是负数,我们需要在最高位添加一个 1 表示其为负数。然后将其余各位取反,即 0 变成 1,1 变成 0,即可得到该负数的二进制表示。
阅读全文