Matlab下二進位制運算

2021-06-09 17:21:59 字數 3666 閱讀 8353

matlab邏輯運算

&: 邏輯與 a&b

返回值:當a、b中元素均為非零元素是,返回1,否則,為0,還可表示成and(a,b);

| :邏輯或 a|b。還可以表示成or(a,b).

~ : 邏輯非 ~a。還可以表示成not(a).

xor:邏輯異或 xor(a,b). //

unit 

uint8()

uint16()

uint64()

dec2bin(乙個十進位制數):將十進位制數轉化為二進位制

dec2hex(乙個十進位制數):將十進位制數轉化為十六進製制數

hex2dec十六進製制轉換為十進位制

hex2num十六進製制轉換為浮點數

%%%%%%%%%%%%

bin2dec二進位制轉化為十進位制。 注意:輸入應該為string型別的數

eg:

bin2dec('01011100')

ans =   92

>> bin2dec('1001')

ans =    9

%%%%%%%%%%%%%

bits= randn(1,bitnumbers)<0.5 : 產生bitnumbers位的偽隨機二進位制序列(prbs)

bits = randn(1,8)<0.5

bits =    1     0     0     1     1     0     1     0

%%%%%%%%%%%%

用matlab實現小數轉二進位制

注:5是wordlength字長,3(4)是fractionlength小數長度。

如果不是0.***x,必須要給整數字留兩個bit,因為含有符號位在裡面。 一:

q = quantizer([5 3]);

num2bin(q, -1.78)

ans =10001 二:

q = quantizer([5 3]);

num2bin(q, 1.78)

ans =01110 三:

q = quantizer([5 4]);

num2bin(q, 0.78)

ans =01100

還可以用matlab自帶的定點工具,fixed-point tool。用法如下:fi(v,s,w,fa fixed-point object with value v, signedness s, word length w, and fraction length f. 用的時候可以令:a=fi(v,s,w,f),要呼叫值的時候用a.data或者a.bin...這些就行了。

eg: 一:

a = fi(-1.78,-1.78,5,3);

>> a.data

ans =   -1.7500

>> a.bin

ans = 10010二:

a = fi(1.78,1.78,5,3);

>> a.data

ans =    1.7500

>> a.bin

ans = 01110 三:

a = fi(0.78,0.78,5,4);

>> a.bin

ans = 01100

>> a.data

ans =    0.7500

附:字串操作(string operations)

base2dec x-進製串轉換為十進位制整數

bin2dec 二進位制串轉換為十進位制整數

dec2base 十進位制整數轉換為x 進製串

dec2bin 十進位制整數轉換為二進位制串

dec2hex 十進位制整數轉換為16 進製串

findstr 在乙個串中尋找乙個子串

hex2dec 16-進製串轉換為十進位制整數

hex2num 16-進製串轉換為浮點數

int2str 將整數轉換為字串

lower 把字串變成小寫

mat2str 將陣列轉換為字串

num2str 把數值轉換為字串

strcat 把多個串連線成長串

strcmp 比較字串

strcmpi 比較字串(忽略大小寫)

strings matlab 中的字串

strjust 字串的對齊方式

strmatch 逐行搜尋串

strnomp 比較字串的前n 個字元

strncmpi 比較字串的前n 個字元(忽略大小寫)

strrep 用另乙個串代替乙個串中的子串

strtok 刪除串中的指定子串

strvcat 建立字串陣列

str2mat 將字串轉換為含有空格的陣列

str2num 將字串轉換為數值

upper 把字串變成大寫

二進位制數轉十進位制:bin2dec

>>a = bin2dec('11111111')

a =   255

再轉為十六進製制數:dec2hex

>> b = dec2hex(a)

b = ff (char型別)

反過來:hex2dec; dec2bin (得到char型別資料)

%%%%%%%%%%%%%%%%%%%%%%%%

bitand(,)操作輸入必須為數字的或者邏輯型的

因此,經過dec2bin得到的資料不能直接作為輸入

>>a = dec2bin(54)   %將54轉換為二進位制表示

a =110110

>>c(a == '1') = 1;   % 將char型的轉換為數字型的

>> c(a == '0') = 0;

>>aa = '011011'

aa =011011

>> dd(aa == '0') = 0;

>> dd(aa == '1') = 1;

>> t = bitand(c,dd) %按位與操作

t = 0     1     0     0     1     0

>> tt(t==1) = '1' % 再將得到的數字型結果轉換為char型的

>> tt(t == 0) = '0'

tt = 010010

%%%%%%%%%%%%%%%%%

字串連線

一、>>a = 'matlab';

>> b = 'set';

>>strcat(a,char(127),b)

ans =matlab set

>>strcat(a,char(313),b)

ans =matlab set

二、>>a = 'matlab';

>>strcat(a,'set') %a是字串

ans =matlabset

>> b = 100;

>> strcat(num2str(b),'set') % b是數字

ans =100set

三、>> a= 'matlab';

>> b = 'set';

>> c = [a,b]

c =matlabset

%%%%%%%%%%%%%%%%%%

取元素>>length(c)

ans =     9

>> c(1:5)

ans =matla

>> c(5:9)

ans =abset

二進位制運算

運算子 符號含義例子與 兩邊都為真時為真 1 1 1或 任何一邊為真時為真1 非取反 如果1則為0 如果0為1 1 0 異或 兩邊相同為1 兩邊不同為0 1 1返回false 1 2返回true 運算子符號含義 例子邏輯與 判斷兩邊 都為真時為真 true true true或 判斷兩邊 任何一邊為...

二進位制運算( )

負數轉化二進位制步驟 將負數取絕對值,得到其絕對值的二進位制 6取絕對值為6,6的二進位制 0110,然後補充0110位32位 000 000 0110 一共32位,即0110前面還有28個0 然後每位取反 111 111 1001 一共32位 接著對上面得到的二進位制 111 111 1001 進...

二進位制運算

一 運算子 按位與 按位或 按位異或 按位取反 按位左移 有符號的按位右移 無符號的按位右移 二 算術運算 二進位制數的算術運算包括 加 減 乘 除四則運算,下面分別予以介紹。1 二進位制數的加法 根據 逢二進一 規則,二進位制數加法的法則為 0 0 00 1 1 0 1 1 1 0 進製為1 1 ...