Это действительно на машине, которая не 16 бит - PullRequest
1 голос
/ 23 июня 2011

Меня спросили в интервью, является ли это действительным объявлением на машине, которая не является 16-битной ??

Ниже декларация,

 unsigned int zero = 0;
 unsigned int compzero = 0xFFFF;

Ответы [ 2 ]

8 голосов
/ 23 июня 2011

Они оба действительные объявления, да, поскольку нет синтаксической ошибки.

Однако, если вы хотите получить дополнение 0 (все биты инвертированы)Вы должны использовать:

unsigned int zero = 0;
unsigned int compzero = ~zero;

С (например) 32-битными unsigned int, 0xffff и ~0 соответственно:

0000 0000 0000 0000 1111 1111 1111 1111
1111 1111 1111 1111 1111 1111 1111 1111
0 голосов
/ 23 июня 2011

Да, замедление действительно. Подумайте об этом так: шестнадцатеричный литерал ничем не отличается от десятичного литерала. Если бы они хотели, чтобы результат преобразования шестнадцатеричного числа в десятичное было равным нулю, то это могло бы быть не так (зависит от того, какая система используется и какая система отрицательных чисел используется: дополнение 1, дополнение 2 или простой оператор Not )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...