Водосливные и Флаги переноса

Действительно ли возможно добавить два 8-разрядных числа со знаком вместе и установить обоих перенос и водосливные биты?

5
задан Steve Jessop 31 January 2010 в 22:12
поделиться

3 ответа

на ваши комментарии, Кажется, ваш вопрос: «Возможен ли как перенос, так и переполнение, набор для дополнения двух, добавление, включающее подписанное число?» Это. Типичная реализация состоит в том, чтобы взять эксклюзивный или из переезда для последнего сумматора с выходом в конце цепочки - следовательно, нанесение переполнения отрицательных чисел приведет к установлению бита в управление. и переполнение бита для установки.

Вот пример, добавьте -1 -1 -1-128:

Carry 10000 0000 
       1000 0000  (-128)
       1111 1111  (-1)
       ---------
       0111 1111 (oops, this is 127!)

будет установлен, поскольку последнее добавье привело к переносу - и переполнением будет установлено на основе правила выше (также, обратите внимание, что -128 добавлено к -1, очевидно, не 127)

6
ответ дан 14 December 2019 в 08:50
поделиться

Objective-C является надлежащим супернабором C. Все, что вы можете сделать в C, может быть сделано идентично в Objective-C. Таким образом, вам не нужно думать о них как о разных языках; Objective-C - это просто «C плюс ещё кое-что.»

// this struct is compatible with C and Obj-C
struct fruit {
    int a;
};

int main()
{
    struct fruit apple;
    apple.a = 1;

    return 0;
}

Тогда любой исходный файл C или Objective-C может получить доступ к этой структуре. Нет никаких дополнительных осложнений, введенных Objective-C.

-121--1466614-

Необходимо сравнить схемы файлов .sln и. * proj между версиями. Я знаю, что структура резко отличается с 2003 по 2008 год. В конце концов, вам лучше создать новый проект и скопировать файлы между ними

-121--4378801-

У вас нет доступа к флагам на языке C, даже если вы можете получить компилятор для создания кода, который их установил, у вас нет пути использовать их.

1
ответ дан 14 December 2019 в 08:50
поделиться

В C тип константы типа 'a' фактически является int с размером 4 (или каким-либо другим зависящим от реализации значением). В C++ типом является char с размером 1. Это одно из многих небольших различий между двумя языками.

-121--553838-

Если удалить только первый предмет массива, можно использовать array _ shift ($ c);

-121--3279188-

Можно написать собственную процедуру добавления на языке C, которая вернет флаги переноса и переполнения для подписанные 8-битные операнды. Если вы ссылаетесь на аппаратные биты переноса и переполнения внутри процессор, нет, это невозможно сделать в C.

0
ответ дан 14 December 2019 в 08:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: