C语言中显示变量所占字节数;字节、字、字长;原码、反码、补码
2011-03-09 15:50
411 查看
字节(Byte 发音:/‘bait/)
在ASCII码中,一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间。
字节(Byte)是计算机信息技术用于计量存储容量和传输容量的一种计量单位,1个字节等于8位二进制。
转换关系
8bit=1byte
1024byte=1kb
1024kb=1mb
1024mb=1gb
1024gb=1tb
字、字节、字长
http://baike.baidu.com/view/60408.htm
有些操作系统和处理器不把它们的标准字长称作字,相反,出于历史原因和某种主观的命名习惯,它们用字来代表一些固定长度的数据类型。比如说,一些系统根据长度把数据划分为字节(byte,8位),字(word,16位),双字(double words 32位)和四字(quad words 64位),而实际上该机是32位的。在本书中—在Linux中一般也是这样—象我们前面所讨论的那样,一个字就是代表处理器的字长
Type Size
char, unsigned char, signed char 1 byte
short, unsigned short 2 bytes
int, unsigned int 4 bytes
long, unsigned long 4 bytes
float 4 bytes
double 8 bytes
long double 8 bytes
符号属性 长度属性 基本型 所占位数 取值范围 输入符举例 输出符举例
-- -- char 8 -2^7 ~ 2^7-1 %c %c、%d、%u
signed -- char 8 -2^7 ~ 2^7-1 %c %c、%d、%u
unsigned -- char 8 0 ~ 2^8-1 %c %c、%d、%u
[signed] short [int] 16 -2^15 ~ 2^15-1 %hd
unsigned short [int] 16 0 ~ 2^16-1 %hu、%ho、%hx
[signed] -- int 32 -2^31 ~ 2^31-1 %d
unsigned -- [int] 32 0 ~ 2^32-1 %u、%o、%x
[signed] long [int] 32 -2^31 ~ 2^31-1 %ld
unsigned long [int] 32 0 ~ 2^32-1 %lu、%lo、%lx
[signed] long long [int] 64 -2^63 ~ 2^63-1 %I64d
unsigned long long [int] 64 0 ~ 2^64-1 %I64u、%I64o、%I64x
-- -- float 32 +/- 3.40282e+038 %f、%e、%g
-- -- double 64 +/- 1.79769e+308 %lf、%le、%lg %f、%e、%g
-- long double 96 +/- 1.79769e+308 %Lf、%Le、%Lg
int的长度,是16位还是32位,与编译器字长有关。
16位编译器(如TC使用的编译器)下,int为16位;32位编译器(如VC使用的编译器cl.exe)下,int为32位。
那八个位能表示多少?
最小:00000000 最大:11111111 这就是8位 也叫一个字节
如果用数没有正负之分那可以表示 0~255 共256个数字. 也可以叫做 2的8次方,你用计算器算算,2的8次方是不是等于256?
如果数有正负之分那可以表示-128~+127 也是256个数,因为8位里面拿走一个位用来表示正负了,所以只能表示最大127
/* 输出不同类型所占的字节数*/
#include <stdio.h>
void main()
{
/* sizeof()是保留字,它的作用是求某类型或某变量类型的字节数, */
/* 括号中可以是类型保留字或变量。*/
/*int型在不同的机器,不同的编译器中的字节数不一样,*/
/*一般来说在TC2.0编译器中字节数为2,在VC编译器中字节数为4 */
printf("The bytes of the variables are:/n");
printf("int:%d bytes/n",sizeof(int));
/* char型的字节数为1 */
printf("char:%d byte/n",sizeof(char));
/* short型的字节数为2 */
printf("short:%d bytes/n",sizeof(short));
/* long型的字节数为4 */
printf("long:%d bytes/n",sizeof(long));
/* float型的字节数为4 */
printf("float:%d bytes/n",sizeof(float));
/* double型的字节数为8 */
printf("double:%d bytes/n",sizeof(double));
/* long double型的字节数为8或10或12 */
printf("long double:%d bytes/n",sizeof(long double));
getchar();
}
在计算机系统中,数值一律用补码来表示(存储)。 注意模的概念。
对于计算机,其概念和方法完全一样。n位计算机,设n=8, 所能表示的最大数是11111111,若再加1称为100000000(9位),但因只有8位,最高位1自然丢失。又回了00000000,所以8位二进制系统的模为2(8)。 在这样的系统中减法问题也可以化成加法问题,只需把减数用相应的补数表示就可以了。把补数用到计算机对数的处理上,就是补码。
原码、反码、补码
http://wxdlut.blog.163.com/blog/static/128770158200911292311953/
在ASCII码中,一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间。
字节(Byte)是计算机信息技术用于计量存储容量和传输容量的一种计量单位,1个字节等于8位二进制。
转换关系
8bit=1byte
1024byte=1kb
1024kb=1mb
1024mb=1gb
1024gb=1tb
字、字节、字长
http://baike.baidu.com/view/60408.htm
有些操作系统和处理器不把它们的标准字长称作字,相反,出于历史原因和某种主观的命名习惯,它们用字来代表一些固定长度的数据类型。比如说,一些系统根据长度把数据划分为字节(byte,8位),字(word,16位),双字(double words 32位)和四字(quad words 64位),而实际上该机是32位的。在本书中—在Linux中一般也是这样—象我们前面所讨论的那样,一个字就是代表处理器的字长
Type Size
char, unsigned char, signed char 1 byte
short, unsigned short 2 bytes
int, unsigned int 4 bytes
long, unsigned long 4 bytes
float 4 bytes
double 8 bytes
long double 8 bytes
符号属性 长度属性 基本型 所占位数 取值范围 输入符举例 输出符举例
-- -- char 8 -2^7 ~ 2^7-1 %c %c、%d、%u
signed -- char 8 -2^7 ~ 2^7-1 %c %c、%d、%u
unsigned -- char 8 0 ~ 2^8-1 %c %c、%d、%u
[signed] short [int] 16 -2^15 ~ 2^15-1 %hd
unsigned short [int] 16 0 ~ 2^16-1 %hu、%ho、%hx
[signed] -- int 32 -2^31 ~ 2^31-1 %d
unsigned -- [int] 32 0 ~ 2^32-1 %u、%o、%x
[signed] long [int] 32 -2^31 ~ 2^31-1 %ld
unsigned long [int] 32 0 ~ 2^32-1 %lu、%lo、%lx
[signed] long long [int] 64 -2^63 ~ 2^63-1 %I64d
unsigned long long [int] 64 0 ~ 2^64-1 %I64u、%I64o、%I64x
-- -- float 32 +/- 3.40282e+038 %f、%e、%g
-- -- double 64 +/- 1.79769e+308 %lf、%le、%lg %f、%e、%g
-- long double 96 +/- 1.79769e+308 %Lf、%Le、%Lg
int的长度,是16位还是32位,与编译器字长有关。
16位编译器(如TC使用的编译器)下,int为16位;32位编译器(如VC使用的编译器cl.exe)下,int为32位。
那八个位能表示多少?
最小:00000000 最大:11111111 这就是8位 也叫一个字节
如果用数没有正负之分那可以表示 0~255 共256个数字. 也可以叫做 2的8次方,你用计算器算算,2的8次方是不是等于256?
如果数有正负之分那可以表示-128~+127 也是256个数,因为8位里面拿走一个位用来表示正负了,所以只能表示最大127
/* 输出不同类型所占的字节数*/
#include <stdio.h>
void main()
{
/* sizeof()是保留字,它的作用是求某类型或某变量类型的字节数, */
/* 括号中可以是类型保留字或变量。*/
/*int型在不同的机器,不同的编译器中的字节数不一样,*/
/*一般来说在TC2.0编译器中字节数为2,在VC编译器中字节数为4 */
printf("The bytes of the variables are:/n");
printf("int:%d bytes/n",sizeof(int));
/* char型的字节数为1 */
printf("char:%d byte/n",sizeof(char));
/* short型的字节数为2 */
printf("short:%d bytes/n",sizeof(short));
/* long型的字节数为4 */
printf("long:%d bytes/n",sizeof(long));
/* float型的字节数为4 */
printf("float:%d bytes/n",sizeof(float));
/* double型的字节数为8 */
printf("double:%d bytes/n",sizeof(double));
/* long double型的字节数为8或10或12 */
printf("long double:%d bytes/n",sizeof(long double));
getchar();
}
在计算机系统中,数值一律用补码来表示(存储)。 注意模的概念。
对于计算机,其概念和方法完全一样。n位计算机,设n=8, 所能表示的最大数是11111111,若再加1称为100000000(9位),但因只有8位,最高位1自然丢失。又回了00000000,所以8位二进制系统的模为2(8)。 在这样的系统中减法问题也可以化成加法问题,只需把减数用相应的补数表示就可以了。把补数用到计算机对数的处理上,就是补码。
原码、反码、补码
http://wxdlut.blog.163.com/blog/static/128770158200911292311953/
相关文章推荐
- Java之字节&0xff、原码、反码、补码、位移、<<、>>
- (C基础)字节,原码,反码,补码
- C语言(四):原码、反码、补码
- C语言中八进制和十六进制怎么表示以及原码、反码、补码、C语言按位取反运算符~
- 字节,原码,反码,补码概念。
- C语言原码反码补码与位运算.
- java 变量及数据类型、原码、反码、补码
- C语言基础(4)-原码,反码,补码及sizeof关键字
- C语言笔记——原码、反码、补码
- 小朋友学C语言(35):原码、反码、补码
- C语言的int最值问题,以及原码反码及补码
- C语言中的原码,反码,补码
- C语言(4) 原码、反码、补码与位运算
- c语言中类型转换与赋值运算符、算术运算符、关系运算符、逻辑运算符。原码、反码、补码。小解。
- 透过-128看原码,反码,补码(c语言中char类型)
- C语言的原码,反码,补码
- C语言的原码,反码和补码
- 原码、反码和补码(C语言 计算机原理)
- 原码反码补码移码的理解及C语言验证
- C语言-数据类型(原码、反码、补码)