余数

将十进制转为二进制

旧城冷巷雨未停 提交于 2019-11-29 00:48:30
public static void integerToBinary(Integer number){ //使用num%2得到商和余数 //使用上一步的商%2 //直到商为o, 将这些余数到倒过来就是二进制 int remainder = 0; //余数 int quotient = 0; //商 StringBuilder s = new StringBuilder(); while(number > 0){ remainder = number % 2; quotient = number / 2; s.append(Integer.toString(remainder)); number = quotient; } System.out.println(s.reverse().toString()); //将字符串倒过来 } public static void integerToBinaryUseStack(Integer number){ //使用num%2得到商和余数 //使用上一步的商%2 //直到商为o int remainder = 0; //余数 int quotient = 0; //商 Stack<Integer> stack = new Stack<Integer>(); while(number > 0){ remainder = number % 2;

负数求余究竟怎么求???

Deadly 提交于 2019-11-28 11:15:45
//转载自: 宁心勉学,慎思笃行 首先,看看自然数的取模运算( 定义1 ): 如果 a 和 d 是两个自然数, d 非零,可以证明存在两个唯一的整数 q 和 r ,满足 a = qd + r 且0 ≤ r < d 。其中, q 被称为商, r 被称为余数。 那么对于负数,是否可以沿用这样的定义呢?我们发现,假如我们按照正数求余的规则求 (-7) mod 3 的结果,就可以表示 -7 为 (-3)* 3 +2。其中,2是余数,-3是商。 那么,各种编程语言和计算器是否是按照这样理解的呢?下面是几种软件中对此的理解。 语言 语句 输出 C++(G++ 编译) cout << (-7) % 3; -1 Java(1.6) System.out.println((-7) % 3); -1 Python 2.6 (-7) % 3 2 百度计算器 (-7) mod 3 2 Google 计算器 (-7) mod 3 2 可以看到,结果特别有意思。这个问题是 百家争鸣 的。看来我们不能直接把正数的法则加在负数上。实际上,在 整数范围 内,自然数的求余法则并不被很多人所接受,大家大多认可的是下面的这个 定义2 。 如果 a 与 d 是 整数 , d 非零,那么 余数 r 满足这样的关系: a = qd + r , q 为整数,且0 ≤ |r| < |d|。 可以看到

数组的算数运算

我怕爱的太早我们不能终老 提交于 2019-11-28 06:37:22
除法 Key_Function np.divide方法, 返回带小数位的结果 np.true_divide方法, 返回带小数位的结果 np.floor_divide方法, 返回只有整数位的结果 / 运算符, 返回带小数位的结果 // 运算符, 返回只有整数位的结果 import numpy as np a = np.array([2, 6, 5]) b = np.array([1, 2, 3]) print(np.divide(b, a)) # [ 0.5 0.33333333 0.6 ] print(np.divide(a, b)) # [ 2. 3. 1.66666667] print(np.true_divide(b, a)) # [ 0.5 0.33333333 0.6 ] print(np.true_divide(a, b)) # [ 2. 3. 1.66666667] print(np.floor_divide(b, a)) # np.floor_divide总是返回整数部分 # [0 0 0] print(np.floor_divide(a, b)) # np.floor_divide总是返回整数部分 # [2 3 1] print(b / a) # [ 0.5 0.33333333 0.6 ] print(a / b) # [ 2. 3. 1.66666667]

CRC校验学习

随声附和 提交于 2019-11-27 13:06:11
上面文字是来自一个 版本的介绍crc校验方式的介绍, 下面截图是一个视频crc校验原理的讲解。 通过这两部分才彻底弄清楚了crc是怎么计算的。 上部分来自 https://blog.csdn.net/weicao1990/article/details/51669853 视频来自 https://v.qq.com/x/page/l0812ydj8i2.html 1. CRC校验原理 CRC校验原理看起来比较复杂,好难懂,因为大多数书上基本上是以二进制的多项式形式来说明的。其实很简单的问题,其根本思想就是先在要发送的帧后面附加一个数(这个就是用来校验的校验码,但要注意,这里的数也是二进制序列的,下同),生成一个新帧发送给接收端。当然,这个附加的数不是随意的,它要使所生成的新帧能与发送端和接收端共同选定的某个特定数整除(注意,这里不是直接采用二进制除法,而是采用一种称之为“ 模2除法 ”)。到达接收端后,再把接收到的新帧除以(同样采用“ 模2除法 ”)这个选定的除数。因为在发送端发送数据帧之前就已通过附加一个数,做了“去余”处理(也就已经能整除了),所以结果应该是没有余数。如果有余数,则表明该帧在传输过程中出现了差错。 【说明】“模2除法”与“算术除法”类似,但它既不向上位借位,也不比较除数和被除数的相同位数值的大小,只要以相同位数进行相除即可。模2加法运算为:1+1=0,0+1=1

166. 分数到小数

风格不统一 提交于 2019-11-27 06:10:20
给定两个整数,分别表示分数的分子 numerator 和分母 denominator,以字符串形式返回小数。 如果小数部分为循环小数,则将循环的部分括在括号内。 示例 1:   输入: numerator = 1, denominator = 2   输出: "0.5" 示例 2:   输入: numerator = 2, denominator = 1   输出: "2" 示例 3:   输入: numerator = 2, denominator = 3   输出: "0.(6)" 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/fraction-to-recurring-decimal 著作权归领扣网络所有。  算法 需要用一个哈希表记录余数出现在小数部分的位置,当你发现已经出现的余数,就可以将重复出现的小数部分用括号括起来。 再出发过程中余数可能为 0,意味着不会出现循环小数,立刻停止程序。 就像两数相除问题一样,主义考虑负分数以及极端情况。 1 public String fractionToDecimal(int numerator, int denominator) { 2 if(numerator == 0) return "0"; //分子为零返回“0” 3 4 StringBuilder res = new

NOIP2000提高组T1 进制转换

萝らか妹 提交于 2019-11-27 03:23:04
https://www.luogu.org/problem/P1017 题目描述 我们可以用这样的方式来表示一个十进制数: 将每个阿拉伯数字乘以一个以该数字所处位置的值减1为指数,以10为底数的幂之和的形式。例如:123可表示为 1*10 2 +2*10 1 +3*10 0 这样的形式。 与之相似的,对二进制数来说,也可表示成每个二进制数码乘以一个以该数字所处位置的值-1为指数,以2为底数的幂之和的形式。一般说来,任何一个正整数R或一个负整数-R都可以被选来,作为一个数制系统的基数。如果是以R或-R为基数,则需要用到的数码为 0,1,....R-1。例如,当R=7时,所需用到的数码是0,1,2,3,4,5和6,这与其是R或-R无关。如果作为基数的数绝对值超过10,则为了表示这些数码,通常使用英文字母来表示那些大于9的数码。例如对16进制数来说,用A表示10,用B表示11,用C表示12,用D表示13,用E表示14,用F表示15。 在负进制数中是用-R 作为基数,例如-15(十进制)相当于110001(-2进制),并且它可以被表示为2的幂级数的和数: 110001=1*(-2) 5 +1*(-2) 4 +0*(-2) 3 +0*(-2) 2 +0*(-2) 1 +1*(-2) 0 设计一个程序,读入一个十进制数和一个负进制数的基数, 并将此十进制数转换为此负进制下的数:-R∈{-2,