Это может быть выстрел в темноте, но при условии, что long vs int не проблема (другие опубликовали ответы, отвечающие только на это) и что 0xFFFF
охватывает всю сумму, требуемую типом, не будет это просто делает value = 0xFFFF
и нет необходимости в битовых манипуляциях? Разве битовая манипуляция не избыточна?
Единственное, что я могу видеть, - это если бы человек, задающий вопрос, хотел, чтобы вы поняли, что на отсутствующие данные, содержащиеся в long, не повлияет простое использование 0xFFFF.
Мне кажется, что вопрос задается довольно странно, в зависимости от того, как этот вопрос представлен здесь, или, может быть, это настолько очевидно, что мы все думаем об этом :)