Tema: Re: Bitų manipuliacijos
Autorius: ejs
Data: 2012-03-19 14:53:01
2012.03.19 03:52, saimhe rašė:
>> turi 'bitset', bet dirba tik su uint'ais.
>
> Oho, visada maniau, kad dirba tik su double mantisės bitais.

C = bitset(A, bit) sets bit position bit in A to 1 (on). A must be an 
unsigned integer or an array of unsigned integers, and bit must be a 
number between 1 and the number of bits in the unsigned integer class of 
A (e.g., 32 for the uint32 class).

>> O man reikia int'ų.
> Su neigiamų skaičių bitais žaisi?

Tenka.

Teigiamiems veikia B=intN(A), C=uintN(B),
> kol A yra leistinose ribose. Tai yra, prieš BITxxx funkcijas konvertuojam
> į uint -- garantuotai tilps.
>
>
>> abs( intN*2( number )) -> bitset( uintN*2( number)) -> 0-intN(number))
>
> Nematlabinė sintaksė -- kaip minimum dvejetai ne vietoje ir intN nepalaiko
> aritmetikos. Tą patį su double įmanoma aprašyt?

matlab'inė būtų tokia:

sign = 0;
         numtype = class(tmp);
         switch numtype
             case 'int8'
             tmp_ = uint16(abs(int16(tmp)));
             case 'int16'
             tmp_ = uint32(abs(int32(tmp)));
             case 'int32'
             tmp_ = uint64(abs(int64(tmp)));
             otherwise
             tmp_ = abs(round(tmp));
         end

if tmp ~= tmp_
     sign = 1;
end

-- 
ejs