如何在MATLAB中显示整数或定点变量的十六进制或二进制表示?

180次浏览(过去30天)
在设计或调试整数或定点算法时,在许多情况下,显示值的十六进制或二进制表示形式是有帮助的。如何在MATLAB命令窗口中显示一个变量来显示我对十六进制或二进制的偏好?

接受的答案

MathWorks定点团队
MathWorks定点团队 2020年8月26日
编辑:MathWorks定点团队 2020年8月28日
使用MATLAB的format命令和/或定点设计器的fipref对象可以用来实现十六进制显示,二进制显示,甚至八进制显示。
十六进制显示方法一:格式化十六进制
为了让MATLAB命令窗口显示所有类型变量的十六进制表示,而不仅仅是整数和定点,可以使用format命令。
格式十六进制
A = int8([35,-3])
B = fi(a)
一个=
1×2 int8行向量
23 fd
b =
23 fd
DataTypeMode: Fixed-point:二进制点扩展
Signedness:签署
字:8
FractionLength: 0
但请记住,这也会影响其他变量类型,如double和single。
C =单(pi)
c =
40490身上
十六进制显示方式二:fipref。NumberDisplay
对于定点fi对象,另一种让MATLAB命令窗口显示十六进制表示的方法是使用fipref。
格式%恢复格式的所有其他
FPR = fipref;
玻璃钢。NumberDisplay =十六进制的
D = fi([35,127;-1,-128],1,8,0)
玻璃钢=
NumberDisplay:十六进制的
NumericTypeDisplay:“全部”
FimathDisplay:“全部”
LoggingMode:“关闭”
DataTypeOverride:“ForceOff”
d =
23日7 f
ff80
DataTypeMode: Fixed-point:二进制点扩展
Signedness:签署
字:8
FractionLength: 0
注意,fipref不影响double, single, int8或任何其他类,只影响fi对象。
A = int8([35,-3])
C =单(pi)
一个=
1×2 int8行向量
35 3
c =
3.1415927
二进制显示方法:fipref。NumberDisplay
对于定点fi对象,fipref可用于MATLAB命令窗口显示二进制,十六进制,甚至八进制表示。
FPR = fipref;
玻璃钢。NumberDisplay =“本”
D = fi([35,127;-1,-128],1,8,0)
玻璃钢=
NumberDisplay:“本”
NumericTypeDisplay:“全部”
FimathDisplay:“全部”
LoggingMode:“关闭”
DataTypeOverride:“ForceOff”
d =
00100011 01111111
11111111 10000000
DataTypeMode: Fixed-point:二进制点扩展
Signedness:签署
字:8
FractionLength: 0
快速技巧显示MATLAB整数的二进制。
要显示MATLAB整数(如int8或uint64)的二进制,一个简单的技巧是使用fipref并将整数转换为其定点等效值。转换为fi的等价物只需要调用fi()
FPR = fipref;
玻璃钢。NumberDisplay =“本”
myInt64Var = int64([14;-1;-5;realmax])
fi (myInt64Var)
myInt64Var =
4×1 int64列向量
14
-1
5
9223372036854775807
ans =
0000000000000000000000000000000000000000000000000000000000001110
1111111111111111111111111111111111111111111111111111111111111111
1111111111111111111111111111111111111111111111111111111111111011
0111111111111111111111111111111111111111111111111111111111111111
DataTypeMode: Fixed-point:二进制点扩展
Signedness:签署
字:64
FractionLength: 0
在R2017a及以后版本中,将内置整数转换为它的fi等效值不需要定点设计器许可。但是,它要求您的MATLAB安装包括MATLAB Coder或Simulink或定点设计器。万博1manbetx
注:十六进制或二进制显示的fi存储为整数
但是请注意,二进制或十六进制显示是fi对象存储的整数值。回想一下二进制点缩放。
RealWorldValue = StoredIntegerValue * 2^-FractionLength
总的来说
RealWorldValue = StoredIntegerValue *斜率+偏差
Y = fi(35*2^- 5,0,8,5)
y =
00100011
DataTypeMode: Fixed-point:二进制点扩展
Signedness:无符号
字:8
FractionLength: 5
恢复值的正常显示
要恢复值的正常显示,请使用MATLAB的format命令和fipref。
格式%或短或长g或…
FPR = fipref;
玻璃钢。NumberDisplay =“RealWorldValue”
A = int8(37)
B =单(pi)
C = fi(35*2^- 5,0,8,5)
一个=
int8
37
b =
3.1415927
c =
1.093750000000000
DataTypeMode: Fixed-point:二进制点扩展
Signedness:无符号
字:8
FractionLength: 5
4评论
沃尔特·罗伯森
沃尔特·罗伯森 2021年12月27日
如果你不使用定点,
S =“ffffcfc7”
as_uint64 = sscanf(S,“% lx”)
as_uint64 =uint644294954951
As_octal = dec2base(as_uint64, 8)
as_octal =“37777747707”

登录评论。

更多答案(0)

社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!

开始狩猎!