首页 > 解决方案 > SByte(有符号)是 16 位而不是 8 位的 sbyte 最小值

问题描述

我试图理解为什么 SByte 类型(AKA:signed char)是 16 位而不是 8 位。

$base = 2   

# 8-bit (char et unsigned char)

$("byte   : " + [byte]::MinValue.ToString() + " to " + [byte]::MaxValue.ToString())
$bin = [Convert]::ToString([byte]::MaxValue, $base).PadLeft(8, "0")
$($bin.Length.ToString() + "," + $bin)
$bin = [Convert]::ToString([byte]::MinValue, $base).PadLeft(8, "0")
$($bin.Length.ToString() + "," + $bin)

$("sbyte  : " + [sbyte]::MinValue.ToString() + " to " + [sbyte]::MaxValue.ToString())
$bin = [Convert]::ToString([sbyte]::MaxValue, $base).PadLeft(8, "0")
$($bin.Length.ToString() + "," + $bin)
$bin = [Convert]::ToString([sbyte]::MinValue, $base).PadLeft(8, "0")
$($bin.Length.ToString() + "," + $bin)

输出:

sbyte:-128 到 127(有符号 8 位)
01111111
0x7f
1111111110000000
0xff80

如果这是由于二进制补码,这是我的操作系统还是硬件级别?

标签: windowspowershell

解决方案


推荐阅读