LINUX.ORG.RU

[C] Как правильно суммировать 8ми разрядные числа

 


0

1
int c = 0x00;
for (i=0; i<= 100; i++){
   c += m[i];
   if (c >= 256) c = 0; // это не дело, постоянно дрожать что переменная "с" переполнится
}

как вариант можно так, но «не вариант»

unsigned char c = 0x00;
for (i=0; i<= 100; i++){
   c += m[i];
}



Последнее исправление: mordovorot (всего исправлений: 2)

Эм. Не понял вопроса. А если к 8 бит char со значением 0xFF прибавить еденицу, то получится 0x00.

PolarFox ★★★★★
()
Ответ на: комментарий от anonymous

в случае если (char 255)+1 происходит переполнение asm, переменной, говорят это не хорошо. Хочу ПРАВИЛЬНО написать суммирование 8ми разрядных чисел, вот и всё.

mordovorot
() автор топика
Ответ на: комментарий от mordovorot

> говорят это не хорошо

Кто говорит, где?

Суммируй в int, потом засунь в char 8 младших бит. Но твой вопрос крив до безобразия.

PolarFox ★★★★★
()
Ответ на: комментарий от anonymous

Как найти сумму 100 целых чисел по модулю 256! Вот вопрос ТСа!

БЛИН ДА! Слов не хватает что бы описать что в голове твориться!

mordovorot
() автор топика
Ответ на: комментарий от mordovorot
#include <stdio.h>

int main(int argc, char *argv[]) {
	char m[] = {3,189,233,992};
	unsigned char c = 0x00;
	int i;
	for (i=0; i<= 4; i++){
		c += (unsigned char)m[i];
		//~ if (c >= 256) c = 0; // это не дело, постоянно дрожать что переменная "с" переполнится
	}
	printf("%d\n", c);
}
backbone ★★★★★
()
Ответ на: комментарий от mordovorot

>в случае если (char 255)+1 происходит переполнение asm, переменной, говорят это не хорошо.

Вы пишете через google translate?

anon_666
()
Ответ на: комментарий от anon_666

>Вы пишете через google translate? нет :) просто иногда слова опережают мысли, тактовая частота мозга на исходе :)

mordovorot
() автор топика
Ответ на: комментарий от anonymous

Здесь целые предполагаются положительными, хотя, что то говорит мне, что будет работать нормально и с отрицательными! Инициализация всех величин скрыта в <...>

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.