Last active
January 16, 2021 15:05
-
-
Save skawnkk/6ccb8ab9cc8df1dd95c348bd8fb6b589 to your computer and use it in GitHub Desktop.
day1 이진덧셈기/진법변환기
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function bin2dec(bin) { | |
var answer = 0; | |
for (let i = 0; i < bin.length; i++) { | |
answer += 2 ** [i] * bin[i] | |
} | |
return answer; | |
} | |
bin = [0, 1, 1, 1] | |
console.log(bin2dec(bin)) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function switchletter(bin) { | |
let sum = 0; | |
if (bin.length !== 0) { | |
for (i = 0; i < 4; i++) { | |
sum += bin[i] * 2 ** i | |
} | |
switch (sum) { | |
case 10: | |
sum = "A"; | |
break; | |
case 11: | |
sum = "B"; | |
break; | |
case 12: | |
sum = "C"; | |
break; | |
case 13: | |
sum = "D"; | |
break; | |
case 14: | |
sum = "E"; | |
break; | |
case 15: | |
sum = "F"; | |
break; | |
} | |
answer.push(sum) | |
bin.splice(0, 4) | |
switchletter(bin) | |
} | |
return answer | |
} | |
function bin2hexa(bin) { | |
while (bin.length % 4 !== 0) { | |
bin.push(0) | |
} | |
switchletter(bin) | |
return answer.join("") | |
} | |
let answer = []; | |
console.log(bin2hexa([1, 1, 1, 0, 1, 0, 1])) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function byteadder(byteA, byteB) { | |
var answer = []; | |
var carry = false; | |
const long = (byteA.length > byteB.length) ? byteA : byteB | |
const short = (byteA.length < byteB.length) ? byteA : byteB | |
for (i = 0; i < short.length; i++) { | |
const result = fulladder(byteA[i], byteB[i], carry); | |
answer.push(result[1]) | |
carry = result[0] | |
} | |
for (i = short.length; i < long.length; i++) { | |
const result = fulladder(byteA[i], byteB[i], carry); | |
answer.push(result[1]) | |
carry = result[0] | |
} | |
answer.push(carry); | |
return answer; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function dec2bin(decimal) { | |
while (decimal >= 2) { | |
((decimal % 2) === 0) ? answer.push(false): answer.push(true); | |
decimal = parseInt(decimal / 2); | |
} | |
answer.push(true) | |
return answer | |
} | |
var answer = []; | |
const decimal = 173 | |
console.log(dec2bin(decimal)) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function halfadder(a, b) { | |
let sum = (a || b) && !(a && b); //xor_비트연산에서는 ^ 으로 표기->0,1로 반환한다. | |
let carry = a && b; //and | |
let answer = [!!carry, !!sum]; //__!!(true,false형변환) | |
return answer; | |
} | |
function fulladder(a, b, carry) { | |
let r1 = halfadder(a, b) | |
let r2 = halfadder(r1[1], carry) | |
let answer = [r1[0] || r2[0], r2[1]] //r1에서의 캐리, r2에서의 캐리의 합 | |
return answer; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function switchletter(hexa) { | |
let answer = []; | |
let decsum = 0; | |
const result = hexa.split("").reverse() | |
console.log(result) | |
for (let i = 0; i < result.length; i++) { | |
let dec = result[i] | |
switch (dec) { | |
case "A": | |
dec = 10 | |
break; | |
case "B": | |
dec = 11 | |
break; | |
case "C": | |
dec = 12 | |
break; | |
case "D": | |
dec = 13 | |
break; | |
case "E": | |
dec = 14 | |
break; | |
case "F": | |
dec = 15 | |
break; | |
default: | |
dec = +dec | |
break; | |
} | |
decsum += 16 ** i * dec | |
} | |
while (decsum >= 2) { | |
((decsum % 2) === 0) ? answer.push(false): answer.push(true); | |
decsum = parseInt(decsum / 2); | |
} | |
answer.push(true) | |
return answer | |
} | |
console.log(switchletter("AF")) | |
//af -> 175 ->10101111 |
이진덧셈기 모두 수정했습니당
2진법->16진법
16진법->2진법
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
day1완료 (비트논리연산자 사용해서 다시해보깅..)