Matlab中十六进制和二进制值数转换

目录

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

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

将十六进制值构成的数组表示为文本

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

使用二进制值的按位运算


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

  • 作为字面值。从 R2019b 开始,可以使用适当的前缀作为表示法,将十六进制和二进制值写成字面值。例如,字面值0x2A指定42,MATLAB 会将其存储为数字而不是文本。
  • 作为字符串或字符向量。例如,字符向量''2A将数字 42 表示为十六进制值。当使用文本表示十六进制或二进制值时,请用引号将它括起来。MATLAB 将这种表示存储为文本,而不是数字。

        MATLAB 中的一些函数可用于将数字与其十六进制及二进制表示相互转换。

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

        十六进制字面值以 0x 或 0X 前缀开头,而二进制字面值以0b或0B前缀开头。MATLAB 将采用这种表示法的数字存储为整数。例如,以下两个字面值都表示整数 42。

A = 0x2A
A = uint8
    42


B = 0b101010
B = uint8
    42

        当用此表示法表示数字时,不要用引号。使用 0-9、A-F 和 a-f 表示十六进制数字。使用 0 和 1 表示二进制数字。默认情况下,MATLAB 将数字存储为能够容纳它的最小无符号整数类型。但是,可以使用可选后缀来指定存储该值的整数类型。

  • 要指定无符号 8 位、16 位、32 位和 64 位整数类型,请使用后缀 u8、u16、u32 和 u64。

  • 要指定有符号 8 位、16 位、32 位和 64 位整数类型,请使用后缀 s8、s16、s32 和 s64。

        例如,要存储为有符号 32 位整数的十六进制字面值的表示如下。

A = 0x2As32
A = int32
    42

        指定有符号整数类型时,也可以将负数写作字面值。用 2 的补码形式表示负数。例如,可以使用后缀 s8 以字面值指定负数。

A = 0xFFs8
A = int8
    -1

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

        还可以使用 dec2hex 和 dec2bin 函数将整数转换为字符向量,以十六进制或二进制值表示它们。将整数转换为十六进制。

hexStr = dec2hex(255)

hexStr = 
'FF'

        将整数转换为二进制。

binStr = dec2bin(16)

binStr = 
'10000'

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

将十六进制值构成的数组表示为文本

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

A = [255 16 12 1024 137]
A = 1×5

         255          16          12        1024         137


hexStr = compose("%X",A)
hexStr = 1x5 string array
    "FF"    "10"    "C"    "400"    "89"

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

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

        要将二进制值转换为十六进制值,请从二进制字面值开始,并将其转换为表示其十六进制值的文本。由于字面值会被解释为数字,可以将其直接指定为 dec2hex 的输入参数。

D = 0b1111;
hexStr = dec2hex(D)

hexStr = 
'F'

        如果从十六进制字面值开始,则可以使用dec2bin将其转换为表示其二进制值的文本。

D = 0x8F;
binStr = dec2bin(D)

binStr = 
'10001111'

使用二进制值的按位运算

        二进制数的一个典型用途是表示位。例如,许多设备都有寄存器,用于访问代表内存中数据或设备状态的位集合。当使用这样的硬件时,可以在 MATLAB 中使用数字来表示寄存器中的值。使用二进制值和按位运算来表示和访问特定位。创建一个表示 8 位寄存器的数字。从二进制表示开始很方便,但该数字是以整数形式存储的。

register = 0b10010110

register = uint8
    150

        要获取或设置特定位的值,请使用位运算。例如,使用 bitand 和 bitshift 函数获得第五位的值。(将该位移至第一个位置,以使 MATLAB 返回 0 或 1。在此示例中,第五位是 1。)

b5 = bitand(register,0b10000);

b5 = bitshift(b5,-4)
b5 = uint8
    1

        要将第五位翻转为 0,请使用bitset函数。

register = bitset(register,5,0)

register = uint8
    134

        由于register是整数,请使用 dec2bin 函数以二进制格式显示所有位。binStr是字符向量,表示不带0b前缀的二进制值。

binStr = dec2bin(register)

binStr = 
'10000110'

  • 4
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值