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

您所在的位置:网站首页 二进制1100101转化为十六进制 Matlab中十六进制和二进制值数转换

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

2024-06-10 22:53| 来源: 网络整理| 查看: 265

目录

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

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

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

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

使用二进制值的按位运算

        可以将数字表示为十六进制或二进制值。在某些情况下,这些表示方式更加方便。例如,可以使用二进制值来表示硬件寄存器的位。在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'



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3