Двоично преобразуване на 3-bit short към 6-bit int

Просто се опитвам да получа малко разяснение относно правилата, когато присвоявам по-малка стойност на битов размер като short на по-голяма като int или double. Ако приемем, че 6-битова машина използва аритметика с допълнение от две за цели числа със знак, какво се случва, когато преобразувам по-малък брой битове в по-голям брой битове? Добавя ли всички нули или всички единици към края или началото? Не съм сигурен, всяка помощ ще бъде оценена. т.е.:

short num = -3;
int y = num;

"число" в двоичен = 101, дали y = 000101 или 101000 или 111101...и т.н.?

Какво е правилото за кастинг към по-голям брой битове?

Благодаря ти!


person singmotor    schedule 12.10.2013    source източник


Отговори (1)


Във вашия пример num ще бъде разширен със знак, за да се побере в шест бита, това означава, че битът за знак се копира в горните 3 бита на y. Тъй като num е отрицателно, неговият знаков бит е '1' и резултатът е 111101.

person greeny    schedule 17.10.2013