十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
C是这样定义单精度数据的——
网站建设哪家好,找创新互联!专注于网页设计、网站建设、微信开发、微信平台小程序开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了长汀免费建站欢迎大家使用!
共有32二进制位,1位符号位+8位阶码(小数点要移动的位数)+23位尾数:
最高位是符号位,1表示负数,0表示正数。这里-2.5,所以取1。
接着是8位阶码,阶码用移码表示,最高位为符号,0表负、1表正;单精度要在原值上+127实现,即加01111111。
把尾数原码接着写在后面,无限小数写够23位即可。注意原码都要化成以1打头(就是小数点移到第一个有效1之后,恢复时小数点应该向哪个方向移几位由阶码表示),并把小数点前面的1省写即可。
对于-2.5具体是这样转换的:
求尾数:2.5的二进制原码是10.1,变成1.01并省去小数点前面的1为01,01就是尾数。
求阶码:由1.01恢复为10.1小数点要向右移一位,所以阶码符号为1(正)、移值为0000001;0000001+1111111=10000000。这就是-2.5的阶码。
求全码:1+10000000+01--11000000 00100000 00000000 00000000——后面的0是补上的,因为小数点后的0实际无数学意义,但C中要补齐32位。最后11000000 00100000 00000000 00000000这个数就是-2.5的格式化表达。
不知你问的是不是这个意思。
c语言中负数表示方法就是在数前加负号“-”,比如:
-5,-10000,等
一个变量赋值为负数也是如此,比如:
x=-1000;
第一位符号位1为负,0为正。 正数的补码和2进制原码是一样的。
负数的补码:
1、先取绝对值|x| ;
2、对|X|+1 ;
3、对|X|+1 取反,就得到它的补码了 。
计算机中存放整型数据都是按补码的形式存放的。
扩展资料:
有符号数的表示方法是由硬件决定,而不是由C决定的。有三种表示方法:
1、二进制原码
0000 0001 表示 1
1000 0001 表示 -1
这个方法有个缺点是有两个零: +0 和 -0。这会引起混淆,而且用两个位组合来表示一个值也有些浪费。
2、二进制补码(最普遍的系统)
区别在于 singned 和 unsigned:
1)如果是无符号字节, 1000 0000 该组合为 128
2)如果是有符号字节, 1000 0000 该组合为 -128
第一种表示数的范围是 0 ~ 255;
第二种表示数的范围是 -128 ~ +127,对于一个二进制补码数取负数,最简单的方法就是取反、加 1。
3、二进制反码
通过反转位组合中的每一位以形成一个数的负数,例如:
0000 0001 表示 1
1111 1110 表示 -1
这种方式也有一个 -0:1111 1111。其范围是 -127 ~ +127。