300/7
[1] 42.85714
7*(300/7 - 42)
[1] 6
floor(300/7)
[1] 42
300 %% 7
[1] 6
floor(487/32)
[1] 15
487 %% 32
[1] 7
naivediv <- function (a, b) {
quot <- 0
r <- a
if(b == 0)
stop (" Attempted division by 0")
while (r >= b) {
quot <- quot + 1
r <- r - b }
return(list(quotient = quot, remainder = r))}
naivediv1 <- function (a, b) {
quot <- 0
r <- a
cat("r = ", r, "q = ", quot, "\n")
if(b == 0)
stop (" Attempted division by 0")
while (r >= b) {
quot <- quot + 1
r <- r - b
cat("r = ", r, "q = ", quot, "\n") }
return(list(quotient = quot, remainder = r))}
naivediv(12,3)
$quotient
[1] 4
$remainder
[1] 0
naivediv1(12,3)
r = 12 q = 0
r = 9 q = 1
r = 6 q = 2
r = 3 q = 3
r = 0 q = 4
$quotient
[1] 4
$remainder
[1] 0
naivediv(50,15)
$quotient
[1] 3
$remainder
[1] 5
naivediv1(50,15)
r = 50 q = 0
r = 35 q = 1
r = 20 q = 2
r = 5 q = 3
$quotient
[1] 3
$remainder
[1] 5
c(floor(300/7), 300 %% 7)
[1] 42 6
floor(5/2)
[1] 2
naivediv1(5,2)
r = 5 q = 0
r = 3 q = 1
r = 1 q = 2
$quotient
[1] 2
$remainder
[1] 1
naivediv2 <- function (a, b) {
quot <- 0
r <- a
cat("r = ", r, "q = ", quot, "\n")
if(b == 0)
stop (" Attempted division by 0")
while (r >= b) {
quot <- quot + 1
r <- r - b
cat("r = ", r, "q = ", quot, "\n") }
}
naivediv2(25,2)
r = 25 q = 0
r = 23 q = 1
r = 21 q = 2
r = 19 q = 3
r = 17 q = 4
r = 15 q = 5
r = 13 q = 6
r = 11 q = 7
r = 9 q = 8
r = 7 q = 9
r = 5 q = 10
r = 3 q = 11
r = 1 q = 12
naivediv2(487,32)
r = 487 q = 0
r = 455 q = 1
r = 423 q = 2
r = 391 q = 3
r = 359 q = 4
r = 327 q = 5
r = 295 q = 6
r = 263 q = 7
r = 231 q = 8
r = 199 q = 9
r = 167 q = 10
r = 135 q = 11
r = 103 q = 12
r = 71 q = 13
r = 39 q = 14
r = 7 q = 15
1010 %% (100*6)
[1] 410
410 %% (50*6)
[1] 110
110 %% (10*6)
[1] 50
r <- bitwShiftL(r,1)
r <- r + bitwAnd(bitwShiftR(a,i),1)
longdiv1 <- function(a, b) {
quot <- 0
r <- 0
if(b == 0)
stop (" Attempted division by 0")
for(i in 31:0) {
r <- bitwShiftL(r, 1)
r <- r + bitwAnd(bitwShiftR(a, i), 1)
if(r >= b) {
r <- r - b
quot <- quot + bitwShiftL(1, i)}}
return(list(quotient = quot, remainder = r))}
longdiv1cat <- function(a,b){quot <- 0
r <- 0
cat("i =",0,"r= ", r," q = ", quot,"\n")
cat("i=",i,"r=",r,"bSLr1=",bitwShiftL(r,1),"\n")
r <- bitwShiftL (r, 1)
r <- r + bitwAnd(bitwShiftR(a, i), 1)
cat("i = ", i, "bSRai = ", bitwShiftR(a, i),
"bwA = ",bitwAnd(bitwShiftR(a,i),1),"\n")
cat("i = ", i, "r = ", r, "\n")
if(r >= b) {
r <- r - b
cat("i=",i,"bSL1i=",bitwShiftL(1,i),"\n")
quot <- quot + bitwShiftL (1, i)
cat("i = ", i, "r = ", r, "q = ",quot,"\n") }
return(list(quotient=quot,remainder = r))}
floor(9/4)
[1] 2
9 %% 4
[1] 1
longdiv2 <- function(a, b) {
quot <- 0
r <- 0
count <- 0
if(b == 0)
stop (" Attempted division by 0")
for(i in 31:0) {
r <- bitwShiftL(r, 1)
r <- r + bitwAnd(bitwShiftR(a, i), 1)
count <- count + 1
if(r >= b) {
r <- r - b
quot <- quot + bitwShiftL(1, i)}}
count <- count + 1
return(list(quotient = quot, remainder = r, count = count))}
naivediv3 <- function (a, b) {
quot <- 0
r <- a
count <- 0
if(b == 0)
stop (" Attempted division by 0")
while (r >= b) {
quot <- quot + 1
r <- r - b
count <- count + 1}
return(list(quotient = quot, remainder = r, count = count))}
naivediv3(1000,3)
$quotient
[1] 333
$remainder
[1] 1
$count
[1] 333
longdiv2(1000,3)
$quotient
[1] 333
$remainder
[1] 1
$count
[1] 33
naivediv3(487,32)
$quotient
[1] 15
$remainder
[1] 7
$count
[1] 15
longdiv2(487,32)
$quotient
[1] 15
$remainder
[1] 7
$count
[1] 33
naivediv3(44100,2)
$quotient
[1] 22050
$remainder
[1] 0
$count
[1] 22050
longdiv2(44100,2)
$quotient
[1] 22050
$remainder
[1] 0
$count
[1] 33
c(floor(300/7), 300 %% 7)
[1] 42 6