可以将数字表示为十六进制或二进制值。在某些情况下,这些数字表示更方便。例如,您可以使用二进制值表示硬件寄存器的位。在MATLAB®中,有两种方式来表示十六进制和二进制值:
作为文字.从R2019b开始,您可以使用适当的前缀作为表示法将十六进制和二进制值编写为文字。例如,0 x2a
是一个指定42的文字,MATLAB将其存储为一个数字,不为文本。
作为字符串或字符向量。例如,字符向量“2”
将数字42表示为十六进制值。当您使用文本表示十六进制或二进制值时,请将其括在引号中。MATLAB将这种表示形式存储为文本,而不是数字。
MATLAB提供了几个函数来转换数字的十六进制和二进制表示。
十六进制文字以a开头0 x
或0 x
前缀,而二进制字面值以a开头0 b
或0 b
前缀。MATLAB将用这种符号表示的数字存储为整数。例如,这两个字面值都表示整数42
.
一个= 0 x2a
一个=uint842
B = 0 b101010
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
一个=int3242
指定有符号整数类型时,可以编写表示负数的字面量。用二的补形式表示负数。方法指定带字面值的负数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
函数还将数字数组转换为以十六进制或二进制值表示的文本。但是,这些函数返回字符数组,其中每一行表示输入数字数组中的一个数字,根据需要填充0。
若要将二进制值转换为十六进制,请从二进制文字开始,并将其转换为表示其十六进制值的文本。因为字面量被解释为数字,所以可以直接将其指定为的输入参数dec2hex
.
D = 0 b1111;hexStr = dec2hex (D)
hexStr = ' F '
如果从十六进制文本开始,则可以使用dec2bin
.
D = 0 x8f;binStr = dec2bin (D)
binStr = ' 10001111 '
二进制数的一个典型用途是表示位。例如,许多设备都具有寄存器,这些寄存器提供对表示内存中数据或设备状态的一组位的访问。当使用这样的硬件时,您可以使用MATLAB中的数字来表示寄存器中的值。使用二进制值和位操作来表示和访问特定的位。
创建一个表示8位寄存器的数字。从二进制表示开始比较方便,但数字存储为整数。
注册= 0 b10010110
注册=uint8150
要获取或设置特定位的值,请使用位操作。例如,使用bitand
而且bitshift
函数来获取第5位的值。(将该位移到第一个位置,使MATLAB返回一个0
或1
.在这个例子中,第5位是a1
.)
b5 = bitand(注册、0 b10000);b5 = bitshift (b5、4)
b5 =uint81
将第5位翻转到0
,可以使用bitset
函数。
= bitset注册(注册5 0)
注册=uint8134
自注册
是整数,请使用dec2bin
函数以二进制格式显示所有位。binStr
是字符向量,并表示无前导的二进制值0 b
前缀。
binStr = dec2bin(注册)
binStr = ' 10000110 '
bin2dec
|bitand
|bitset
|bitshift
|dec2bin
|dec2hex
|hex2dec
|sprintf
|sscanf