【发布时间】:2012-07-25 12:56:29
【问题描述】:
给定一个整数值,我需要一些方法来找出存储该值所需的最小字节数。该值可以是有符号或无符号的,最高可达 64 位。对于有符号整数,还要考虑符号位。
例如:
8 requires 1 byte at minimum
unsigned 255 requires 1 byte at minimum
signed 255 requires 2 bytes at minimum
4351 requires 2 bytes at minimum
-4294967296 requires 5 bytes at minimum
unsigned 0xFFFFFFFFFFFFFFFF requires 8 bytes at minimum
我可以想到一种快速而简单的方法来解决这个问题,使用许多 if 语句,但可能有更好的(例如更简单、更聪明、更快)的方法来解决这个问题。您可以假设一个带有签名int (long value, bool signed) 的方法或两个方法int (long value)(用于签名)和int (ulong value)(用于未签名)。
【问题讨论】:
-
你需要两个输入(long val,bool signed),对吧?
-
正确,
(long value, bool signed)将满足签名或未签名的要求,最高 64 位。但也可能是两种方法,一种(long value)另一种(ulong value)。
标签: c# integer bit-manipulation