gpt4 book ai didi

C# 4 位数据类型

转载 作者:太空宇宙 更新时间:2023-11-03 17:30:14 25 4
gpt4 key购买 nike

关闭。这个问题需要更多focused .它目前不接受答案。












想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post .

4年前关闭。




Improve this question




是否 C# 有一个 4 位 数据类型?我想用浪费 的变量制作一个程序最低 内存量,因为程序会消耗很多。

例如:我需要保存一个值,我知道它将来自 010和一个 4 位 var 可以来自 015这是完美的。但我发现最接近的是 8 位(1 字节)数据类型 字节 .

我有创建一个 的想法c++ dll 使用自定义数据类型。类似 蚕食 .但是,如果那是我问题的解决方案,我不知道从哪里开始,也不知道我必须做什么。

限制 :创建一个字节并将其一分为二是 不是 一个选项。

最佳答案

不,在 c# 中没有四位数据类型这样的东西。

顺便说一下,四位只能存储 0 到 15 之间的数字,所以如果您存储 0 到 127 之间的值,这听起来不适合。要计算变量的范围,假设它有 N 位,使用公式(2^N)-1来计算最大值。 2^4 = 16 - 1 = 15。

如果您需要使用小于 8 位的数据类型以节省空间,您将需要使用 packed binary format和访问它的特殊代码。

例如,您可以使用 AND 掩码和位移位在一个字节中存储两个四位值,例如

byte source = 0xAD;
var hiNybble = (source & 0xF0) >> 4; //Left hand nybble = A
var loNyblle = (source & 0x0F); //Right hand nybble = D

或者使用整数除法和模数,这也很好用,但可能不太可读:
var hiNybble = source / 16;
var loNybble = source % 16;

当然,您可以使用扩展方法。
static byte GetLowNybble(this byte input)
{
return input % 16;
}

static byte GetHighNybble(this byte input)
{
return input / 16;
}

var hiNybble = source.GetHighNybble();
var loNybble = source.GetLowNybble();

存储更容易:
var source = hiNybble * 16 + lowNybble;

只更新一个 nybble 更难:
var source = source & 0xF0 + loNybble;        //Update only low four bits
var source = source & 0x0F + (hiNybble << 4); //Update only high bits

关于C# 4 位数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42075537/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com