匿名用户
1级
2013-08-05 回答
【8位整数】
计算机中存储数据,是以二进制的形式存储(有时也被表示为16进制)。
二进制8位 就是 0000 0000 到 1111 1111 (换算成十进制是 0 ~ 255 )
【无符号 / 有符号 整型】
同时C语言中 整型的最高位 用来表示 符号。
规定当 最高位为 1表示负数。
无符号整型中 附加 unsigned 关键字
无符号8位整数, 0000 0000 ~ 1111 1111 表示 0 ~ 255
有符号整型中 没有附加 unsigned 关键字
有符号8位整数:
0000 0000 ~ 0111 1111 表示 0 ~ 127
1111 1111 ~ 1000 0000 表示 -1 ~ -128
【第一种方法】【 char 表示8位整数 】
C语言 中一般 用 char 表示一个字节(byte)来表示 8位(bit)整数
但是如果 你想自定义 位数 比如 4位整数 7位整数 11位整数等等呢
就需要用到结构体 中可以可以声明 一个类型的实际占用位数。
【第二种方法】【 struct 中自定义类型位数 】
你可以使用 struct 或者 class (C++中使用,可以定义构造函数 或者使用默认构造函数)内部数据成员可以加冒号限定位数。
【 演示说明 】
以下代码演示了 当 有符号整型限定为n时(n小于等于类型最大占用位数) 赋值 2^(n-1) 时,整型变量表示为 一个负数。 说明高位被 设定为 1, 同时证明了 已经分配了 指定位数的 整数。
【 C语言 】中使用 如下所示:
#include
#include
#include
#include
struct INT_4{
int value :4;
};
struct INT_5{
int value :5;
};
void main() {
char ch = 128;
struct INT_4 i4 = {8};
struct INT_5 i5 = {16};
//i4.value = 8;
printf("i4 --> %d i5 --> %d \n", i4.value, i5.value);
printf("char --> %d \n", ch);
system("pause");;
}【 输出结果:】
i4 --> -8 i5 --> -16
char --> -128
请按任意键继续. . .
【 C++ 】中使用 如下所示:
#include
#include
#include
struct INT_8{
int value :8;
};
class INT_4{
public:
INT_4 ( int value = 0 ){
this->value = value;
}
int value :4;
};
int main() {
INT_8 i8 = INT_8();
INT_4 i4 = INT_4();
char ch = 128;
i8.value = 128;
i4.value = 8;
printf("i8 --> %d, i4 --> %d \n", i8.value, i4.value);
printf("char --> %d \n", ch);
system("pause");;
return 0;
}【 输出结果:】
i8 --> -128, i4 --> -8
char --> -128
请按任意键继续. . .
当然这种方式用的不多,尤其是C语言中,不推荐使用这种方式。
C语言往往作为 库或者 驱动开发,需要很好的兼容性。
(不确定标准C 语言 ANSI C标准是否支持该特性。)
【 注:】
以上代码 均在 code::block GNU Mingw gcc 编译器下通过