主要内容

十六进制和二进制值

您可以将数字表示为十六进制或二进制值。在某些情况下,这些数字的表示更方便。例如,您可以使用二进制值表示硬件寄存器的位。在MATLAB®中,有两种方法可以代表十六进制和二进制值:

  • 作为文字。从R2019B开始,您可以使用适当的前缀作为文字编写十六进制和二进制值作为表示法。例如,0x2a.是一个指定42的文字,MATLAB将它存储为一个数字,不是为文本。

  • 作为字符串或字符向量。例如,字符向量'2a'将数字42表示为十六进制值。当您使用文本表示十六进制或二进制值时,请将其括在引号中。MATLAB将这种表示存储为文本,而不是数字。

MATLAB提供了几种用于将数字转换为十六进制和二进制表示的函数。

使用十六进制和二进制表示法写整数

十六进制文字从一个开始0x.0x.前缀,而二进制文字从一个开始0B.0B.字首。MATLAB存储用此表示法写入的数字作为整数。例如,这两个文字都代表整数42.

一个= 0 x2a
A =uint8.42.
B = 0 b101010
B =uint8.42.

使用此符号编写数字时请勿使用引号。用0.-9.一种-F,一种-F代表十六进制数字。用0.1表示二进制数字。

默认情况下,MATLAB将该数字存储为能够容纳它的最小无符号整数类型。但是,您可以使用一个可选的后缀来指定存储值的整数类型。

  • 要指定无符号8、16、32和64位整数类型,请使用后缀U8.u16u32,u64

  • 要指定带符号的8、16、32和64位整数类型,请使用后缀S8s16S32.,S64.

例如,将十六进制文字写入以存储为符号的32位整数。

a = 0x2as32.
A =int3242.

指定符号整数类型时,您可以编写表示负数的文字。代表两种补充形式的负数。例如,使用使用的文字指定负数S8后缀。

a = 0xFFS8.
A =INT8.-1

由于MATLAB将这些文字存储为数字,所以您可以在任何使用数字数组的上下文中或函数中使用它们。

将十六进制和二进制值代表为文本

您还可以将整数转换为字符向量,这些向量将其表示为十六进制或二进制值使用dec2hexdec2bin职能。将整数转换为十六进制。

hexStr = dec2hex (255)
hexStr =“FF”

将整数转换为二进制。

Binstr = Dec2bin(16)
binStr = ' 10000 '

由于这些函数生成文本,因此在需要表示数值的文本时使用它们。例如,您可以将这些值附加到标题或绘图标签,或将它们写入将数字存储为十六进制或二进制表示的文件。

代表作为文本的十六进制值阵列

将数字数组转换为文本的推荐方法是使用组成函数。这个函数返回一个与输入数字数组大小相同的字符串数组。要产生十六进制格式,请使用%X作为格式说明符。

a = [255 16 12 1024 137]
A =1×5255 16 12 1024 137
hexstr = compose(“%X”,)
hexstr =.1x5字符串“ff”“10”“c”“400”“89”

dec2hexdec2bin函数还将数字数组转换为文本,将其表示为十六进制或二进制值。但是,这些函数返回字符数组,其中每行表示输入数字数组中的一个数字,必要时用零填充。

将二进制表示转换为十六进制

要将二进制值转换为十六进制,首先从二进制文字开始,然后将其转换为表示其十六进制值的文本。由于文字被解释为数字,所以可以直接指定它作为输入参数dec2hex

D = 0 b1111;hexStr = dec2hex (D)
hexstr ='f'

如果您从十六进制文字开始,那么您可以将其转换为代表其二进制值的文本dec2bin

d = 0x8f;binstr = dec2bin(d)
binstr ='10001111'

二进制值的按位运算

一个典型的二进制数字使用是表示位。例如,许多设备具有寄存器,其提供对表示存储器中的数据的比特集合的访问或设备​​的状态。使用此类硬件时,您可以在MATLAB中使用数字来表示寄存器中的值。使用二进制值和按位操作来表示和访问特定位。

创建表示8位寄存器的数字。从二进制表示开始是方便的,但数字存储为整数。

注册= 0 b10010110
注册=uint8.150.

要获取或设置特定位的值,请使用按位操作。例如,使用比特兰比赛函数以获得第五位的值。(将位移到第一个位置,以便MATLAB返回一个0.1。在这个例子中,第五位是一个1.)

B5 =位(寄存器,0b10000);B5 = Bitshift(B5,-4)
b5 =uint8.1

将第5位翻转到0., 使用Bitset.函数。

= bitset注册(注册5 0)
注册=uint8.134.

登记是一个整数,使用dec2bin函数以二进制格式显示所有位。宾司是一个字符向量,表示没有领导的二进制值0B.字首。

binstr = dec2bin(寄存器)
binstr ='10000110'

也可以看看

||||||||

相关的话题

外部网站