我一直在阅读一些网站,但没有一个对我有意义。有符号和无符号二进制符号与有符号和无符号变量相同。如果你能提供帮助,我会很高兴的。)
答案 0 :(得分:8)
"签署"指标表示该项目可以保持正值或负值。 "无符号"没有区分正面和负面的价值观。有符号/无符号变量可以引用任何数值数据类型(例如二进制,整数,浮点数等)。每种数据类型可能进一步定义为有符号或无符号。
例如,一个8位有符号二进制数可以保存0-127的值,包括正数和负数(1位用于符号,7位用于值),而8位无符号二进制数可以保存值从0到255(没有任何区别是否应该将该值视为正面或负面,尽管通常认为它是正面的。)
签名二进制文件是签名变量的特定数据类型。
希望有所帮助!
答案 1 :(得分:1)
“signed”变量意味着该值使用它的最高位(左边的最后一位)保持正值或负值,这就是我们所说的“有符号位”。 “无符号”变量不会,但最重要的位是2的下一个幂。
我们将一个带符号的位称为1为负数,而对于无符号数,该位将属于常规二进制位规则。
例如,最大值如下所示:
无符号字符0b11111111(十六进制0xFF)=十进制255,(128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 = 255)
有符号字符0b11111111(十六进制0xFF)=十进制-127,(-1 *(64 + 32 + 16 + 8 + 4 + 2 + 1)= - 127)
此外,您可能会在代码中看到:
无符号字符0b10000001(十六进制0x81)=十进制129,(128 + 1 = 129)
签名字符0b10000001(十六进制0x81)=十进制-1,( - 1 * 1)
(注意:char是一个字节,这意味着它有二进制的八位数字可以更改)
(对于任何想知道的人,0b表示该位为二进制,0x表示它是十六进制)
答案 2 :(得分:0)
有符号和无符号二进制是指依赖于所表示的二进制符号的转换。而对于变量,它指的是变量能否存储负值。
在二进制中用于签名位:我们说1
为负数,0
为正数。所以,如果你看到第二个例子,第一个位是1意味着什么? - 对,它的消极。我们不将它包含在转换base2到base10中。
例如:1001 在无符号位(不关心符号):9
例如:1001 在有符号位(MSB是符号位): - 1
对于变量,很可能存储负数。
MSB:最重要的位
答案 3 :(得分:0)
这取决于位置或情况。例如,在汇编中,我们要从内存中加载值为0xFF(二进制的〜11111111)的字节。 $ s3具有此值的地址。
带有func lbu(加载字节无信号),它仅允许加载无信号二进制文件:lb rt,offset(rs)。