내가하고 싶은 일이 그렇게 어렵지는 않을 것이라고 생각하지만, 혼자서 알아 내지는 못합니다.C 코드에서 정수만 수학으로 비트율을 계산하는 방법은 무엇입니까?
float 또는 double을 사용하지 않고 C 언어 코드에서 밀리 초 단위로 초당 바이트를 계산하려고합니다.
예를 들어 정수 만 사용하는 경우 지난 1300ms에 123000 바이트가 들어 오면 초당 바이트 수는 어떻게 계산합니까?
감사합니다.
내가하고 싶은 일이 그렇게 어렵지는 않을 것이라고 생각하지만, 혼자서 알아 내지는 못합니다.C 코드에서 정수만 수학으로 비트율을 계산하는 방법은 무엇입니까?
float 또는 double을 사용하지 않고 C 언어 코드에서 밀리 초 단위로 초당 바이트를 계산하려고합니다.
예를 들어 정수 만 사용하는 경우 지난 1300ms에 123000 바이트가 들어 오면 초당 바이트 수는 어떻게 계산합니까?
감사합니다.
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;
}
고마워요. 나는 그것이 꽤 쉽다라고 상상했다. 그러나 어떻게 든 나는 그것으로 생각해 내지 않고 있었다. :) – Tom
바이트 * (1000 MS/s)/MS – dbush
bytes_per_second '= (bytes_counted * 1000)/duration_in_milliseconds'; 괄호 안의 부분이 중간 결과를 저장할만큼 충분히 큰 정수 유형을 사용하여 계산되는지 확인하십시오. 나는'unsigned long'을 사용합니다. –
정수를 사용하는 경우 반올림 문제가 중요 해집니다. 부동 소수점 숫자를 사용하면 반올림이 일반적으로 선택됩니다 (둥근 경우도 일반적입니다). –