0 c binary bit-manipulation decimal
我目前正在搞一个 C 项目,它将接收两个 8 位二进制数并将它们转换为十进制值。我对 C 中的按位运算符以及它们如何处理数字有很好的理解,我的问题是围绕语法的问题。
ATM我的程序很简单:
int main() {
char *inp1;
char *inp2;
unsigned long binNum1;
unsigned long binNum2;
printf("Enter the first binary number: ");
scanf("%s", inp1);
printf("Enter the second binary number: ");
scanf("%s", inp2);
binNum1 = strtoul(inp1, NULL, 2);
binNum2 = strtoul(inp1, NULL, 2);
unsigned long orVal = binNum1 | binNum2;
unsigned long andVal = binNum1 & binNum2;
unsigned long exclVal = binNum1 ^ binNum2;
printf("Your or value is: %lu", orVal);
printf("Your and value is: %lu", andVal);
printf("Your exclusive value is: %lu", exclVal);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
本质上,我只想获取每个二进制数的两个十进制值的“或”、“与”和“排除”的值。但是,当我运行它时,我遇到了分段错误。我很确定这是由于语法造成的,但我在网上找不到太多关于此类问题的信息。
有了这些线
char *inp1;
char *inp2;
...
scanf("%s", inp1);
scanf("%s", inp2);
Run Code Online (Sandbox Code Playgroud)
您尚未向inp1或分配任何内存inp2。指针未初始化,这可能是段错误的原因。
为了简化它,你可以这样做:
char inp1[100];
printf("Enter the first binary number: ");
if(scanf("%99s", inp1) != 1) {
return 1;
}
Run Code Online (Sandbox Code Playgroud)
类似地对于inp2.
| 归档时间: |
|
| 查看次数: |
885 次 |
| 最近记录: |