2016-11-25 3 views
0

내가하고 싶은 일이 그렇게 어렵지는 않을 것이라고 생각하지만, 혼자서 알아 내지는 못합니다.C 코드에서 정수만 수학으로 비트율을 계산하는 방법은 무엇입니까?

float 또는 double을 사용하지 않고 C 언어 코드에서 밀리 초 단위로 초당 바이트를 계산하려고합니다.

예를 들어 정수 만 사용하는 경우 지난 1300ms에 123000 바이트가 들어 오면 초당 바이트 수는 어떻게 계산합니까?

감사합니다.

+0

바이트 * (1000 MS/s)/MS – dbush

+0

bytes_per_second '= (bytes_counted * 1000)/duration_in_milliseconds'; 괄호 안의 부분이 중간 결과를 저장할만큼 충분히 큰 정수 유형을 사용하여 계산되는지 확인하십시오. 나는'unsigned long'을 사용합니다. –

+0

정수를 사용하는 경우 반올림 문제가 중요 해집니다. 부동 소수점 숫자를 사용하면 반올림이 일반적으로 선택됩니다 (둥근 경우도 일반적입니다). –

답변

0

32 비트 시스템을 사용 중이며 int가 32 비트 데이터 유형이라고 가정합니다. 또한 정수 데이터 형식에 대한 반올림을 고려하십시오.

다음은 참조 용 코드입니다.

int main() 
{ 
    int bytes_count = 123000; /* total bytes captured */ 
    int time_in_ms = 1300; /* capture end time - start time */ 

    int byte_rate_per_second = (bytes_count * 1000)/ time_in_ms; /* It will round-off as it's integer type*/ 
    int roundoff = ((bytes_count % time_in_ms) * 10)/time_in_ms; /*gives roundoff in one point precision. Use recursion for more precision*/ 
    return 0; 
} 
+0

고마워요. 나는 그것이 꽤 쉽다라고 상상했다. 그러나 어떻게 든 나는 그것으로 생각해 내지 않고 있었다. :) – Tom