Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.03.29;
Скачать: CL | DM;

Вниз

Завтра пятница. Просто задумался :)   Найти похожие ветки 

 
Sha ©   (2009-01-22 16:56) [0]

Определить, равны ли 1 два старших бита числа в его двоичном представлении?
Например, в числах 12, 6, 25 - равны, а в числах 8, 9, 11 - нет.
Хочется чего-нить простого...


 
Jack128_   (2009-01-22 17:07) [1]

Temp := I shr 30;
Result := (Temp = 3) or (Temp = 0)

?


 
Сергей М. ©   (2009-01-22 17:09) [2]

http://www.intel.com/software/products/documentation/vlin/mergedprojects/analyzer_ec/mergedprojects/reference_olh/mergedProjects/instructions/instruct32_hh/vc20a.htm


 
Alkid ©   (2009-01-22 17:11) [3]

Я так понял, что трабл в том, что длина двоичного представления нефиксирована?


 
han_malign ©   (2009-01-22 17:12) [4]

x xor (x shr 1) < x


 
MBo ©   (2009-01-22 17:16) [5]

i and (i shl 1) < i


 
БарЛог ©   (2009-01-22 17:18) [6]

некоторое размышление: достаточно узнать, равен ли единице предвоследний (второй справа) бит, т.к. правый всегда равен :)


 
БарЛог ©   (2009-01-22 17:19) [7]

ой, напутал. старший бит всегда равен (левый).


 
MBo ©   (2009-01-22 17:23) [8]

>MBo ©   (22.01.09 17:16) [5]
я неправ, не учел младшие биты


 
Сергей М. ©   (2009-01-22 17:32) [9]

function IsTwoMostSignificantBitsSet(Value: Cardinal): Boolean;
asm
 mov edx, eax
 xor eax, eax
 bsr ecx, edx
 je @@exit
 dec ecx
 jl  @@exit
 bt edx, ecx
 setc al
@@exit:
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
 if IsTwoMostSignificantBitsSet(6) then ShowMessage("Два старших значащих бита установлены");
end;


 
Sha ©   (2009-01-22 17:33) [10]

han_malign ©   (22.01.09 17:12) [4]

да )


 
Sha ©   (2009-01-22 17:35) [11]

Сергей М. ©   (22.01.09 17:32) [9]

тоже да, но [4] вроде проще


 
Сергей М. ©   (2009-01-22 17:37) [12]


> Sha ©   (22.01.09 17:35) [11]


Кому как)
На вкус и цвет, как говорится..


 
Юрий Зотов ©   (2009-01-22 17:51) [13]

S = IntToBin(X);
if (S[1] = "1") and (S[2] = "1") then
 ShowMessage("Ура!!! Я крутой программер!!!");
:o))))))))))))
А то - XOR"ы там всякие. Это каждый ламер сможет.


 
han_malign ©   (2009-01-22 17:57) [14]


> Сергей М. © [9]

80386 Clocks:
BSR r32,r        10+3n
DEC r32            2
BT r,r32    3

SHR r,1       3
XOR r32,r    2
CMP r,r32      2


 
Сергей М. ©   (2009-01-22 19:51) [15]


> han_malign ©   (22.01.09 17:57) [14]


Я и не гнался за производительностью).. Разумеется, нет предела совершенству.
Наглядно ведь ? Наглядно. А наглядность - сестра простоты)


 
Pavia ©   (2009-01-22 23:58) [16]


> 80386 Clocks:

Выкинь свой 386 и купи core 2 due у него:
Инструкция Latency Throughput
BSR  2 1
DEC  1 0.5
BT 1 0.33

SHR 1 0.333
XOR 1 0.5
CMP 1 0.5


 
Дуб ©   (2009-01-23 07:42) [17]

До кучи сюда же, также простая:

Есть два числа b и n(b<=n). Найти сколько чисел меньше 2^n имеют взведенными первые b битов.


 
AndreyV ©   (2009-01-23 07:51) [18]

> [17] Дуб ©   (23.01.09 07:42)
> До кучи сюда же, также простая:
>
> Есть два числа b и n(b<=n). Найти сколько чисел меньше 2^n
> имеют взведенными первые b битов.

2^(n-b)


 
Дуб ©   (2009-01-23 08:02) [19]

> AndreyV ©   (23.01.09 07:51) [18]

Видимо недопонимание. Я не про первые биты в байте,  а первые в записи без первых нулей.

n=3 b=2
11
110
111

Ответ 3,  а не 2.


 
AndreyV ©   (2009-01-23 08:36) [20]

> [19] Дуб ©   (23.01.09 08:02)
> Видимо недопонимание. Я не про первые биты в байте,  а первые
> в записи без первых нулей.

2*2^(n-b)-1
Так что ли.


 
Дуб ©   (2009-01-23 08:58) [21]

> Так что ли.

Аха. Вид формулы однако у тебя - не признал. :)

Каждому такому числу можно сопоставить k-битное, кроме нуля. Где k= n-b+1

А с помощью k бит выбрасывая 0, можно записать 2^k-1 число.


 
MBo ©   (2009-01-23 09:17) [22]

Еще задачка:
найти количество n-битовых чисел, в записи которых нет двух нулей рядом
(например, для n=3 их будет 5 штук)


 
MBo ©   (2009-01-23 09:51) [23]

P.S. ведущие нули здесь не игнорируются.


 
MBo ©   (2009-01-23 09:55) [24]

P.P.S. Задача может быть генерализована и на системы счисления с большим основанием, например, на десятичную


 
Sha ©   (2009-01-23 13:24) [25]

f(1)=2;
f(2)=3;
f(n)=f(n-1)+f(n-2);


 
Sha ©   (2009-01-23 13:33) [26]

P.S. :)

Знаю препода-приколиста, который на этом бы не остановился,
раскрутил бы индукцию в обратную сторону и начал разбор полетов
со случая f(0)=1


 
MBo ©   (2009-01-23 15:32) [27]

>f(n)=f(n-1)+f(n-2);
Точно. А для k-ричной системы
f(n)= (k- 1) * (f(n-1)+f(n-2))



Страницы: 1 вся ветка

Текущий архив: 2009.03.29;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.022 c
15-1232360686
XentaAbsenta
2009-01-19 13:24
2009.03.29
Чем выловить и записать на диск весь


15-1233142456
XeON
2009-01-28 14:34
2009.03.29
Обрезка изображения


3-1216467013
Евгений Р.
2008-07-19 15:30
2009.03.29
Обновление в DbGrid


1-1208942275
carmen
2008-04-23 13:17
2009.03.29
эксторт в XML из ExpressQuantumGrid Suite 6.24


2-1233575242
programmer90
2009-02-02 14:47
2009.03.29
TreeView