일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 논문번역 꿀팁
- ROS #spin() #spinOnce() #ROS기초
- 크롬오류#크롬검색어자동완성끄기#검색어자동완성오류#검색어자동완성 제거#검색어 노란선#검색어반복입력
- 파이썬 음성파일 텍스트 변환
- 파이썬 #파이썬프로젝트 #파이썬 예시 #파이썬 파일경로 #파이썬 자동화
- QGC#QGrouncControl#GLIB오류
- 파파고 꿀팁
- ROS #Robotics #ROS기초
- 파파고 번역
- 파이썬 유튜브
- 리눅스기초#리눅스명령어#리눅스 tail#tail#모의해킹 리눅스
- 파이썬#subprocess#communicate()
- 파이썬 예시
- 파이썬 음성인식
- 파이썬 #
- pdf 번역
- 패스트 캠퍼스 #자율주행 #비전
- 스트림 암호 one-time-pad 공격#보안#암호
- PDF 개행문자
- 파이썬 채팅
- 파이썬 열
- 파이선 행
- 리눅스#모의해킹#리눅스명령어#head 명령어
- 파이썬
- 파이썬 프로젝트
- 파이썬#파이썬경로#파이썬폴더#파이썬디렉토리
- 통계 #ROC #TPR #FPR #TNR #이진분류 #Accuracy #Recall
- 파이썬 엑셀 파일 읽고 쓰기
- 파이썬 텍스트 변환 #파이썬 공부
- 파이썬 파일 전송
개발자비행일지
파이썬으로 10진법에서 2진법 16진법 으로 변경하기 본문
먼저 알고리즘은 다음과 같다.
입력으로 10진수를 받고, 이 10진수를 2로 계속 나누어서, 몫이 1이 될 때 까지 모듈러 2 연산의 나머지 값을 활용한다.
모듈러 2 연산을 할 때 결과는 0 또는 1인데, 이 결과 값을 2진수의 최하의 비트 부터 채워주는 것이다.
예를 들어
200을 2진수로 변경 할 때,
200%2 = 0 이고 몫은 100이 된다.
그럼 2의 0에 해당 하는 최하위 비트는 0 이된다.
그 다음으로
100%2를 수행하고, 이 때 값은 0이 되고 몫은 50이 된다.
그러면 2진수로 바꾸엇을 때의 비트는 00이 된다.
다시 수행하면
50%2의 값은 0이 되고 몫은 25가 된다.
그러면 하위 비트 부터 최상위 비트 까지는 000이 된다.
25%2의 값은 1이 되고, 몫은 12가 된다.
그러면 비트는 1000이 된다.
12%2의 값은 0이 되고, 몫은 6이 된다.
그러면 비트는 01000이 된다.
6%2의 값은 0이 되고, 몫은 3이 된다.
그러면 비트는 001000이 된다.
3%2의 값은 1이고, 몫은 1이 된다.
그러면 비트는 1001000이된다.
마지막으로 최상위 비트에 1을 추가해 준다. 그러면
200이라는 십진수는 11001000(2)가 된다.
이걸 파이썬으로 구현하면 다음과 같다.
def binary(a):
hex = {'0000':'0','0001':'1','0010':'2','0011':'3',
'0100': '4','0101': '5', '0110': '6', '0111':'7',
'1000': '8', '1001':'9', '1010':'A', '1011':'B',
'1100': 'C', '1101':'D','1110':'E', '1111':'F'}
print(hex)
l= list()
l_h = list()
s1= ""
s2= ""
while(a != 0):
r=a%2
l.append(r)
a = a//2
l.reverse()
print(l)
s1 = list_to_string(l)
print(s1)
print(l)
for i in range(0,len(l),4):
print(i)
l_h.append(hex[s1[i:i+4]])
print(l_h)
s2 = list_to_string(l_h)
print(s2)
def list_to_string(list):
s=""
for i in range(len(list)):
s += str(list[i])
return s
그 다음 함수로 바꿔줄 부분을 바꿔주면 다음과 같다.
def binary(a):
hex = {'0000':'0','0001':'1','0010':'2','0011':'3',
'0100': '4','0101': '5', '0110': '6', '0111':'7',
'1000': '8', '1001':'9', '1010':'A', '1011':'B',
'1100': 'C', '1101':'D','1110':'E', '1111':'F'}
print(hex)
l= list()
l_h = list()
s1= ""
s2= ""
while(a != 0):
r=a%2
l.append(r)
a = a//2
l.reverse()
s1 = list_to_string(l)
print_binary(s1)
l_h = hex_slice(l,l_h,s1,hex)
s2 = list_to_string(l_h)
print_hex(s2)
def list_to_string(list):
s=""
for i in range(len(list)):
s += str(list[i])
return s
def hex_slice(list1,list2,string,dict):
for i in range(0,len(list1),4):
list2.append(dict[string[i:i+4]])
return list2
def print_binary(string):
print(string+"(2)")
def print_hex(string):
print("0x"+string)