可以用十六进制或二进制值表示数字。在某些情况下,这些数字表示方式更方便。例如,可以用二进制值表示硬件寄存器的位。在MATLAB®中,有两种表示十六进制和二进制值的方法:
作为文字.从R2019b开始,可以使用适当的前缀作为表示法将十六进制和二进制值写成文字。例如,0 x2a
是一个字面形,指定42-and matlab将其存储为数字,不作为文本。
作为字符串或字符向量。例如,字符向量“2”
表示为十六进制值的数字42。当您使用文本表示十六进制或二进制值时,将其括在引号中。Matlab将此表示作为文本存储,而不是数字。
MATLAB提供了几个函数,用于将数字转换为十六进制和二进制表示。
十六进制文字以a开头0 x
或者0 x
前缀,而二进制字面值以0 b
或者0 b
前缀。MATLAB将用这种符号表示的数字存储为整数。例如,这两个字面值都表示整数42
.
a = 0x2a.
一个=uint842
B = 0B101010.
B =uint842
用这种符号写数字时不要使用引号。使用0
-9
,一个
-F
, 和一个
-f
表示十六进制数字。使用0
和1
代表二进制数字。
默认情况下,Matlab将数字存储为可以容纳它的最小无符号整数类型。但是,您可以使用可选的后缀来指定存储该值的整数的类型。
指定未签名的8,16-,32-和64位整数类型,使用后缀与
,U16.
,U32.
, 和U64.
.
要指定符号8-,16-,32-和64位整数类型,请使用后缀s8
,S16
,s32
, 和s64
.
例如,编写一个十六进制字面值,将其存储为有符号的32位整数。
一个= 0 x2as32
一个=INT32.42
当指定有符号整数类型时,可以编写表示负数的字面值。用二的补数形式表示负数。例如,使用s8
后缀。
一个= 0 xffs8
一个=int8-1
由于MATLAB将这些文字存储为数字,因此您可以在使用数字数组的任何上下文或功能中使用它们。
属性还可以将整数转换为表示为十六进制或二进制值的字符向量Dec2Hex.
和DEC2BIN.
功能。将整数转换为十六进制。
Hexstr = Dec2Hex(255)
hexstr ='ff'
将整数转换为二进制文件。
binStr = dec2bin (16)
binstr ='10000'
由于这些函数生成文本,所以在需要表示数值的文本时使用它们。例如,您可以将这些值附加到标题或标绘标签中,或者将它们写入存储数字作为其十六进制或二进制表示形式的文件中。
将数字数组转换为文本的推荐方式是使用撰写
函数。此函数返回具有与输入数字数组相同大小的字符串数组。生产十六进制格式,使用% X
作为格式说明符。
A = [255 16 12 1024 137]
一个=1×5255 16 12 1024 137
hexStr =组成(“X %”,一种)
hexStr =1 x5字符串" ff " "10" " c " "400" "89"
的Dec2Hex.
和DEC2BIN.
功能还将数字数量转换为表示为十六进制或二进制值的文本。但是,这些函数返回字符阵列,其中每一行表示从输入数字数组的数字,必要时填充零。
要将二进制值转换为十六进制,以二进制文字开头,并将其转换为表示其十六进制值的文本。由于文字被解释为数字,因此您可以直接将其指定为输入参数Dec2Hex.
.
d = 0b1111;Hexstr = Dec2Hex(D)
hexStr = ' F '
如果从十六进制文本开始,则可以使用以下命令将其转换为表示二进制值的文本DEC2BIN.
.
D = 0 x8f;binStr = dec2bin (D)
binStr = ' 10001111 '
二进制数的一个典型用途是表示位。例如,许多设备都有寄存器,提供对表示内存中数据或设备状态的位集合的访问。当使用这种硬件时,您可以使用MATLAB中的数字来表示寄存器中的值。使用二进制值和按位运算来表示和访问特定的位。
创建一个代表8位寄存器的数字。从二进制表示开始比较方便,但数字存储为整数。
注册= 0B10010110.
注册=uint8150
要获取或设置特定位的值,请使用按位运算。例如,使用thebitand
和bitshift
函数获取第5位的值。(将该位移到第一个位置,以便MATLAB返回a0
或者1
.在本例中,第五位是a1
.)
b5 = bitand(注册、0 b10000);b5 = bitshift (b5、4)
B5 =uint81
翻转第五位0
,可以使用bitset
函数。
注册= Bitset(寄存器,5,0)
注册=uint8134
自从注册
是整数,请使用DEC2BIN.
功能以二进制格式显示所有位。binStr
是字符向量,并表示没有前导的二进制值0 b
前缀。
binStr = dec2bin(注册)
binStr = ' 10000110 '
bin2dec.
|bitand
|bitset
|bitshift
|DEC2BIN.
|Dec2Hex.
|hex2dec
|sprintf
|sscanf