“第五十天” 机组--数据的表示 向上向下取整函数

        数据的表示和运算

进位计数制

对于我们现在使用的如十进制计数法,二进制计数法等,符号反映权重,比如十进制的0~9,9这个符号的权重和0是不一样的,而且现在的计数法符号所在位置也反映权重,比如个位上的1 和十位上的 1 的权重也是不一样的。

计算机组成原理中的"位权"通常指的是二进制数中每个位所代表的数值大小或权重。在二进制表示中,每个位的权值是2的幂次方,从右到左依次递增,通常从0开始。这意味着最右边的位的权值为2^0,接下来一位的权值为2^1,再下一位的权值为2^2,依此类推。r进制的位权也是类似意思。

基数:每个数码位所用到的不同符号的个数,r进制的基数就是r,比如10进制的基数是10个,0~9,二进制是2个,0~1.

计算机使用二进制的原因在于:

1、  可使用两个稳定状态的物理器件表示;

2、  0,1正好对应逻辑值 假、真 ,方柏霓实现逻辑运算;

3、  可很方便地使用逻辑门电路实现算术运算。

二、八、十六进制的相互转换

二进制 -> 八进制 ,从最低位(小数点前最低位,小数点后最高位)起,每三位一组,每组转换成对应的八进制符号,高位不足补0.

比如二进制的 1 111 000 010 . 011 010 -> 1 7 0 2 . 3 2

八进制 -> 二进制 ,每位八进制转化成对应的 3位二进制

二进制与十六进制的转换也是这个这样的,不过是四对一,这个转换还蛮好用的。

各种进制的常见书写方式

二进制 : (10001)₂   100001B   ,这个B可以表示二进制,自己不知道,注意点,下面的H,D都是一样的,记住。

八进制:(12347)₈
十六进制:(14ABCDEF)₁₆    1652H (16进制:hexadecimal)  0x1652(这个是,不是o,记住记住)

十进制:(1689)₁₀  1897(10机制:decimalism)

这里还有十进制转化成其他进制,不多赘述。

        BCD码:用二进制编码的十进制

8421码:8421码就是用四位的二进制一一对应表示十进制的 0~9,四位的二进制码权值从高到低就是 8 4 2 1嘛,0000表示0,0001表示1,0010表示2,以此类推,不过这种表示方式 1010~1111是没有定义的,没有对应的值,而且这样如果十进制的 5+8=13 ,对应到8421码上是

0101 + 1000 =1101,这个1101是不再映射表里面的,处理方法就是对这种不再映射表的值再加 0110 (强制向高位进1),然后得到的值就是十进制对应的二进制结果,如 1101 + 0110 = 1 0011,就是 13 。

然后还有 余3码:就是再8421码的基础上再加上3 ,比如原本 0000对应的 0,现在是0011对应0;

还有 2421码:2421码是改变了权值的定义 ,现在这四位二进制的权值分别是 2 4 2 1,4以下,包括4,对应值关系和8421码是一样的,比如4 还是 0100,但4以上的值就定义保证最高位的2为1,这样是为了避免歧义,比如5可以表示为 0101,也可以表示为 1011,但有了最高位的要求,就只能是 1011,这样就避免歧义的发生。也就是说对于2421码,表示 0~4 的时候最高位是 0,表示 5~9的时候最高位是 1.

这个题,可以用ceil函数实现向上取整,不过我感觉写的这个没有用ceil函数的也挺好玩的。其实主要是我学c的时候还真没有学到ceil函数,就不知道。

向上取整是指,不小于该值的最小整数,例如 1.2的是2,-2.3的是-2

向下取整是指,不大于该值的最大整数。

#include<math.h>
int main()
{
	int n = 0;
	scanf("%d", &n);
	float x = 0.;
	float y = 0.;
	int num = 0;
	int i = 0;
	float sum = 0.;
	for (i = 0; i < n; i++)
	{
		scanf("%f %f %d", &x, &y, &num);
		sum += sqrt(x * x + y * y) / 50*2 + num * 1.5;
	}
	if(sum-(int)sum==0)//这个地方
		printf("%d", (int)sum);
	else
		printf("%d", (int)sum+1);
	return 0;
}

 这个是ceil函数,向上取整。

然后还有向下取整函数floor,一起先简单学了吧

 这个地方注意一点 : n*=3+1;效果和n*=4;一样,不是先乘三再加一;这里我输入的是3,

好了刚刚又发现了一个错误,!的级别比%要高,所以应该这样写!(n%2)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值