Anatoly Vorobey (avva) wrote,
Anatoly Vorobey
avva

задачки про биты (для программистов)

1. Что делает функция g(x)? Зачем она нужна? x - положительное целое число.

f(x) = x & -x
h(x) = x + f(x)
g(x) = (((h(x) xor x)/f(x)) >> 2) + h(x)


2. 64-битное число содержит восемь ASCII-символов, по одному в каждом байте. Дано, что каждый из этих символов либо пробел, либо цифра, либо латинская буква. Произведите над всеми символами операцию toupper() (переводящую строчные буквы в прописные) с помощью всего трех битовых операций над исходным числом. Битовой операцией, определенности ради, назовем одно из двух: a) любую операцию с одним или двумя аргументами, значение которой в каждом бите результата зависит только от соответствующих битов аргументов; b) сдвиг влево или вправо.

(update: первоначально я забыл разрешить b) выше, виноват)
Subscribe
  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 49 comments