c语言 一个高难度问题!

来源:百度知道 编辑:UC知道 时间:2024/05/29 08:09:16
我要实现自定义数据类型

比如我想定义一个占用128位的数据类型
数据类型占用位数可以自定义

请高手指点如何实现
请高手用最最简单的代码实现
并且讲讲原理 和代码意思
谢谢 谢谢 无比感谢!
我就20分了 全部奉上

你说的是占128位的数据。有两种意思。一是占128位,可以是char型16个,或者其他类型。二是位,一共128个。
我们可以用结构体来进行定义。第一种理解就很简单了,不需要指明了,说说第二种定义的方法。楼上哥们说的bool类型定义是不对的,因为bool也是以int型来处理的,虽然看起来想位。
定义方法:
typedef strcut stBit_t
{
unsigned char bit0 :1;
unsigned char bit1 :1;
unsignde char bit2 :1;
...128个
};
解释一下,typedef一般可以加也可以不加,加的话,我们用这个结构体定义对象的话,就不用再加struct。(只在C语言中)
内部首先 unsigned char是用来告诉我们我们所定义的位是以无符号char型对齐的,就是每8位对齐,如果我们改成int,就是以int型对齐,根据CPU不用int类型大小不同。
其次,bit0等是我们定义的位的名称。这个很简单了。
重点是其后面的 “:1”这个是什么东西呢?这个冒号其实就是位定义符号了。后面的数字用来说明我定义的变量是占几位。这里是每个变量占一位,我们还可以变成“:2”这样,我们定义的结构体里的每一变量都占两位了。
呵呵,很简单吧。用法就是对结构体赋个对象。例如:stBit_t bit;这样我们可以bit.bit0这么来用
当然,我们定义了这个结构体,还可以加union将整个结构体和16个无符号整型一起用。例如
union UCHAR
{
unsigned char c1;
unsigned char c2;
...16个
typedef strcut stBit_t
{
unsigned char bit0 :1;
unsigned char bit1 :1;
unsignde char bit2 :1;
...128个
};
};
这样,因为是同一空间共享,我们可以用大数据类型整体赋值。呵呵,明白了吗哦?