首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我的C函数没有返回正确的整数到二进制值

我的C函数没有返回正确的整数到二进制值
EN

Stack Overflow用户
提问于 2017-02-23 12:20:51
回答 1查看 250关注 0票数 0

我正在尝试创建一个函数,它返回一个给定整数的二进制等效值。但是,当给定测试输入1234时,它返回给定输入的二进制和左移版本的二进制的不正确值:

代码语言:javascript
复制
Enter a base-10 integer: 1234
Enter number of places to shift bit: 8

1234 1421075418
315904 1826920960

给定值和左移值是正确的,但是二进制等效值是不正确的。

代码语言:javascript
复制
int showbits(int value) {
  return (value == 0 || value == 1 ? value : ((value % 2) + 10 * showbits(value / 2)));
}

void left_bit_shift() {
  int value = get_single_base_10();
  int number_shift = get_number_shift();
  int bit_value = showbits(value);

  int left_shifted_value = value << number_shift;
  int left_shifted_bit = showbits(left_shifted_value);

  printf("%d %d\n", value, bit_value);
  printf("%d %d", left_shifted_value, left_shifted_bit);
}

int get_single_base_10() {
  int value;
  printf("Enter a base-10 integer: ");
  scanf("%d", &value);
  return value;
}

int get_number_shift() {
  int shift;
  printf("Enter number of places to shift bit: ");
  scanf("%d", &shift);
  return shift;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-23 12:33:59

因为1234的二进制是10011010010,它不能存储在您的机器上的整数变量中。如果您将showbits()的返回类型更改为long,它可能会起作用。但这不是获得二进制值的永久解决方案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42406977

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档