文章插图
我们学习了有符号和无符号数,可以知道,在一个字节中存放了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小编还为您精选了以下内容,希望对您有所帮助:- Excel自动填充学号的便捷方法
- 解决OBS直播没有声音的问题
- 手把手教你做超好吃的甲鱼汤 甲鱼汤怎么做好喝又营养
- 制作金箔文字和边框效果的Word封面
- 如何打造一个整洁有序的电脑桌面
- 不是钱的事 淄博烧烤店停业三天 老板:保命要紧
- 如何在WORD文档中插入多行多列的表格
- 手机内屏与外屏的区别
- 水煮肉片的做法 水煮肉片的家常做法
- 新解决Windows 10中javac未识别为内部或外部命令的方法