avva: (Default)
[personal profile] 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) выше, виноват)

Date: 2008-01-12 01:08 pm (UTC)
From: [identity profile] avva.livejournal.com
x = 1010111000 (10 бит)
f(x) = 1000
h(x) = f(x) + x = 1011000000 (у вас 1011110000, результат сложения с 111000, а не с 1000)
h(x) ^ x = 0001111000, у вас получилось так же, хотя должно было получиться 1011110000 ^ 1010111000 = 0001001000. Как это так вышло? :)

Отсюда значение g(x) должно выйти выходит неверным, если вы не подставили в конце опять правильное h(x) вместо своего неправильного :) (и да, у нее есть более полезное применение).
(deleted comment)

Date: 2008-01-12 02:03 pm (UTC)

Date: 2008-01-12 02:03 pm (UTC)
From: [identity profile] avva.livejournal.com
не совсем.

December 2025

S M T W T F S
  123 4 56
78 9 10 11 1213
1415 1617181920
21 22 23 24 2526 27
28293031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Dec. 28th, 2025 10:36 am
Powered by Dreamwidth Studios