C语言的无符号类型 C语言无符号


C语言的无符号类型 C语言无符号

文章插图
我们学习了有符号和无符号数,可以知道,在一个字节中存放了8位的数据,例如1111 1111这样的8位二进制数据,就有:
(1) 如果把这8位二进制数据当作“有符号”数看待,那么,最高位是符号位,其余7位是数值位;
(2) 如果把这8位二进制数据当作“无符号”数看待,那么,没有符号位,8位数据都是数值位;
可以看到,同一个二进制数据,当中有符号和无符号数看待的时候,它们表示的结果是不一样的 。
在C语言中,提供了unsigned这个关键字来表示无符号数 。例如:
unsigned char x;
就是定义了x这个变量是无符号类型,所以它表示的数值没有符号位 。例如存放1111 1111数据,因为无符号数没有符号位,全部8位数据是数值位,所以表示255这个数值 。表示的最小数据就是0000 0000,既0 数值 。如下是一个测试的例子 。


程序运行的结果如下:


可以看到,对于255这个整数,其二进制表示为1111 1111,那么,就有:
(1) 把255赋给a1变量,当作有符号数看待,所以,符号位是1,表示负数,数值位是111 1111,那么,要表示为十进制,就是数值位取反,得到000 0000,然后,加1,得到000 0001,所以,二进制1111 1111表示为有符号数是-1 。所以与输出的a1变量值是-1一致 。
(2) 把255赋给a2变量,当作无符号数看待,所以,8位二进制数据1111 1111全部存储到a2变量中当作数值位,所以,a2变量输出是255 。
对于a3变量的操作,我们是把一个负数赋值给无符号数a3,那么,由于-1这个数值其在1个字节中表示的二进制数为1111 1111,所以,就相当于把1111 1111数值赋给a3变量,那么,a3变量中就有1111 1111这样的数据,与a2变量存储的数据是一样的 。所以,输出的数值与a2变量一样 。
对于char、short、int、long 类型,可以使用unsigned关键字来修饰,定义无符号类型的数据 。但是,对于 float、double类型的数据,由于是浮点数,所以,不可以使用unsigned关键字来修饰 。
【C语言的无符号类型 C语言无符号】


    以上关于本文的内容,仅作参考!温馨提示:如遇健康、疾病相关的问题,请您及时就医或请专业人士给予相关指导!

    「四川龙网」www.sichuanlong.com小编还为您精选了以下内容,希望对您有所帮助: