在c中移动分数

时间:2014-11-04 05:46:24

标签: c binary bit-shift

我有这段代码:

int a = 3, b = 2;
(a/b) << 3 ;

a/b如何转移?我怎样才能用二进制表示分数?

3 个答案:

答案 0 :(得分:5)

(a / b)不会被转移。 它将评估表达式(a / b)int / int可能是一个int,然后它将被移位。

(a/b) << 3
(3/2) << 3 //integer divided by an integer will gives you an integer, So you will get 1
(1) << 3 // 1 will get left shifted with 3 bits
8

答案 1 :(得分:3)

由于3 / 21,答案只是8,即1×2 3

答案 2 :(得分:2)

1)整数和浮点都是“二进制”表示。    从这个意义上说,“表示分数”的一种方法是使用浮点数很简单。

2)用整数表示分数的一种有效方法是使用整数的:一个用于你的分子,另一个用于你的除数:

http://en.wikipedia.org/wiki/Fraction_%28mathematics%29

3)然而第三种选择是使用定点整数算法

http://en.wikipedia.org/wiki/Fixed-point_arithmetic