C语言 请问signed char,unsigned char,short,unsigned sh

作者&投稿:枝届 (若有异议请与网页底部的电邮联系)
~ signed

unsigned
是C语言中的类型指示符(type
specifier),signed
指示被声明的对象的类型为有符号整型(signed
integer
type),unsigned
指示被声明的对象的类型为无符号整型(unsigned
integer
type)。
除了用于
bit
field,单独使用的
int
即指示有符号整型,此时
signed
没有实际意义,int

unsigned
一同使用时指示无符号整型。
char,signed
char,unsigned
char
是三个不同的类型(char
和另外两个之一的二进制表示方法相同,至于
char
具体是否有符号,通常可通过编译指令指定)。
对于
bit
field,
signed
int
类型的
bit
field
总是有符号的,unsigned
int
类型的
bit
field
总是无符号的,而单独使用的
int
是否表示有符号,由编译器定义。
无符号数的二进制表示(object
representation)由两部分构成,即
value
bits

padding
bits,value
bits
是一串二进制位,第
M

value
bit
表示
2

M-1
次方,因此
N

value
bits
加起来就可以表示
0

2

N
次方减一
这个范围内的所有整数。padding
bits
不影响数的值(可能不存在
padding
bit
)。
有符号数的二进制表示(object
representation)由三部分构成,即
sign
bit,value
bits

padding
bits
,其中
sign
bit
只有一位,这一位的值为
0
时表示这个数为正数,此时它不影响有符号数的值,value
bits
的含义与无符号数中的
value
bits
相同。sign
bit

1
时表示这个数为负数,此时这个数可以使用原码、反码、补码
中的任何一种编码来表示数值。和无符号数一样,padding
bits
不影响数的值(可能不存在
padding
bit
)。
例如,当某个无符号类型有
32
个value
bits
时,它的第
1

value
bit
表示
2

0
次方,第
2

value
bit
表示
2

1
次方,……,第
32

value
bit
表示
2

31
次方。当所有
value
bits
都为
1
时,就表示
2

0
次方加
2

1
次方加……加
2

31
次方,即
2

32次方减一;当所有的
value
bits
都为
0
时,就表示
0
,这个无符号类型的取值范围就是
0

2

32
次方减一。
与之对应的有符号类型有
1
个sign
bit

31

value
bits,当
sign
bit

0
时,可以表示
0

2

31
次方减一范围内的任何一个整数,如果使用补码,当
sign
bit

1
时,可以看作
sign
bit
的值是
2

31
次方
的相反数,因此当
sign
bit

1

sign
bit
加上
value
bit
一共可以表示
2

31
次方
的相反数到
-1
范围内的任何一个整数,考虑所有情况,这个有符号类型的取值范围就是
2

31
次方
的相反数

2

32
次方减一。


达孜县17261821723: C语言,有一种格式叫signed char,范围是 - 128--127,请问负值有对应的ASCII码?负的ASCII有什么用? -
关转复方: 负值的一般是打印不出字符来的,但有例外的 对于汉字来说,负值的作用可以用来表示汉字,两个负值的字符就可以拼一个汉字出来.当然,对于不同编码,拼出来的汉字是不同的,比如UTF-8用的是3个字符拼出一个汉字来

达孜县17261821723: C语言中,int16位怎么转成signed char8位?要加符号吗?看右边八位吗?比如 - 2的in -
关转复方: short a = -124; // 16位 int unsigned char b,c; // BYTE b,c; b = a & 0XFF; // 低8位赋给b c = (a && 0XFF00) >> 8; // 高8为赋给c

达孜县17261821723: 在C语言中,unsigned char是什么类型? -
关转复方: unsigned char是无符号字节型,char类型变量的大小通常为1个字节(1字节=8个位),且属于整型.整型的每一种都有无符号(unsigned)和有符号(signed)两种类型(float和double总是带符号的),在默认情况下声明的整型变量都是有符号...

达孜县17261821723: c语言signed char, char, unsinedchar区别 -
关转复方: 我不是很赞同这句话!!(1) char 和 signed char是一个意思,没有unsigned标识,就是有符号类型 unsined char是无符号类型!(2) char ch='a' ; unsigned char ch1='b' ; 无论是ch=ch1; 还是ch1=ch ;都不需要类型转化,因为它俩的大小和数据存储方式是相同的,区别只在字节的第一位如何解释的问题! (3) 有符号类型首位表示符号,0正,1负.无符号没这说法,8位全表示数. 用这个来说类型转化是有问题的!

达孜县17261821723: C语言中什么是字符型数据?如何声明? -
关转复方: char类型, 一半情况下占用8位,分为signed和unsigned,在计算机中全都以ASCII值表示,signed]char 有符号字符型 长度(字节)为1 -128~127 unsigned char 无符号字符型 长度(字节)为1 0~255 书中基本只给到0~127 //char c ='a';char c ; c = 'a';

达孜县17261821723: c语言中signed 和unsigned是什么意思 -
关转复方: 1、signed是默认的,表示这个变量是有符号的,可以存储整数和负数. 2、unsigned则需要显示给出表示这个变量,没有符号值能存储数的大小,而且不能表示正负. 3、signed存储符号是有代价的,代价就是存储空间中的一个比特位专门用...

达孜县17261821723: C语言中unsigned和signed在声明时有什么作用? -
关转复方: signed和unsigned用于修饰整数类型(包括char,从ANSI C89标准开始支持). signed表示有符号,unsigned表示无符号.对应的有符号数的最大取值要比无符号的小约一半,因为最高一位被用来表示符号. 默认的int、short、long、long long...

达孜县17261821723: C语言中unsigned和signed数据的转换 -
关转复方: 先讲一下 原码 补码 反码的 概念 正整数的 原码 补码 反码 都是一样的负数的反码是将其原码除 符号位之外的各位取反 负数的补码是将其原码除 符号位之外的各位取反 再在末尾加1假设 存在 一个字节的整型 signed int8 x = -5 x的原码1000 ...

达孜县17261821723: c语言变量分为signed 和unsigned 两种,这里有符号和没符号 区别在哪里? 举个例子说下. -
关转复方: char的范围是-128到127 unsigned char的范围是0到255

达孜县17261821723: signed char型数据的范围为什么事 - 128 - 127? -
关转复方: 那么你想想1OOOOOOO和00000000的区别 感觉负数是不是用补码表示的 那么就能到—128le

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网