πŸ’Ύμ§„μˆ˜μ™€ μ•„μŠ€ν‚€μ½”λ“œ

lyju777Β·2024λ…„ 3μ›” 8일

μ§„μˆ˜λž€?

νŠΉμ • 개수의 μˆ«μžλ§Œμ„ μ΄μš©ν•˜μ—¬ 수λ₯Ό λ‚˜νƒ€λ‚΄λŠ” 수의 체계λ₯Ό 말함.


n진법

0λΆ€ν„° n개의 숫자λ₯Ό μ‚¬μš©ν•΄μ„œ 수λ₯Ό ν‘œν˜„ν•˜λŠ” λ°©λ²•μœΌλ‘œ 0~ (n-1) κΉŒμ§€ ν‘œν˜„

ex) 

2진법: 0~1κΉŒμ§€μ˜ 2개의 숫자둜 ν‘œν˜„

8진법: 0~7 κΉŒμ§€μ˜ 8개의 숫자둜 ν‘œν˜„

16진법: 0~9 κΉŒμ§€μ˜ 10개의 숫자λ₯Ό μ‚¬μš©ν•˜κ³  λ‚¨λŠ” μžλ¦¬λŠ” A~F κΉŒμ§€ 6개의 문자둜 ν‘œν˜„

μ§„μˆ˜ λ³€ν™˜

1. 10μ§„μˆ˜λ₯Ό nμ§„μˆ˜λ‘œ λ³€ν™˜

10μ§„μˆ˜ 값을 λͺ«μ΄ n보닀 μž‘μ„ λ•ŒκΉŒμ§€ n으둜 λ‚˜λˆ„κ³  λ‚˜λ¨Έμ§€ 값듀을 ν‘œμ‹œν•œ 후에 λ‚˜λ¨Έμ§€ 값듀을 읽음


2. nμ§„μˆ˜λ₯Ό 10μ§„μˆ˜λ‘œ λ³€ν™˜

nμ§„μˆ˜μ—μ„œ λ§ˆμ§€λ§‰ μžλ¦¬λŠ” 자리 μˆ«μžμ— μžλ¦¬κ°’μΈ n⁰을 κ³±ν•˜κ³ , λ§ˆμ§€λ§‰μ—μ„œ λ‘λ²ˆμ§Έ μžλ¦¬λŠ” 자리 μˆ«μžμ— μžλ¦¬κ°’μΈ n¹을 κ³±ν•˜κ³ , λ§ˆμ§€λ§‰μ—μ„œ μ„Έλ²ˆμ§Έ μžλ¦¬λŠ” 자리 μˆ«μžμ— μžλ¦Ώκ°’μΈ nΒ²λ₯Ό κ³±ν•˜κ³  ...자리 μˆ«μžμ™€ μžκΉƒκ°’μ„ 더해 10μ§„μˆ˜λ₯Ό 계산함


μ•„μŠ€ν‚€ μ½”λ“œ

μ•„μŠ€ν‚€ μ½”λ“œ(ASCII)λž€ λ―Έκ΅­ ANSIμ—μ„œ ν‘œμ€€ν™”ν•œ μ •λ³΄κ΅ν™˜μš© λΆ€ν˜Έμ²΄κ³„λ‘œ 영문 ν‚€λ³΄λ“œλ‘œ μž…λ ₯ν•  수 μžˆλŠ” λͺ¨λ“  κΈ°ν˜Έκ°€ ν• λ‹Ήλœ 기본적인 λΆ€ν˜Έμ²΄κ³„μ΄λ‹€. 65: A 와 97: aλŠ” μ€‘μš”ν•˜κ²Œ μˆ™μ§€ν•  것

0  : NULL or \0  67 : C
32 : (Space)     68 : D
48 : 0           97 : a
49 : 1           98 : b
65 : A           99 : c
66 : B           100 : d
#include <stdio.h>
int main(){
  char a = 'A' //A의 μ•„μŠ€ν‚€μ½”λ“œκ°’μ€ 65
  printf("aλŠ” %dμž…λ‹ˆλ‹€.",a); // %d(μ •μˆ˜)둜 좜λ ₯ -> 'aλŠ” 65μž…λ‹ˆλ‹€.' 
  printf("aλŠ” %cμž…λ‹ˆλ‹€.",a); // %c(문자)둜 좜λ ₯ -> 'aλŠ” Aμž…λ‹ˆλ‹€.'
  return 0;
}

λΉ„νŠΈ μ—°μ‚°μž

https://www.tcpschool.com/c/c_operator_bitwise
λΉ„νŠΈ μ—°μ‚°μžλŠ” λΉ„νŠΈ λ‹¨μœ„λ‘œ 논리 연산을 ν•  λ•Œ μ‚¬μš©ν•˜λŠ” μ—°μ‚°μžλ‘œ 전체 λΉ„νŠΈλ₯Ό μ™Όμͺ½μ΄λ‚˜ 였λ₯Έμͺ½μœΌλ‘œ μ΄λ™μ‹œν‚¬ λ•Œλ„ μ‚¬μš©ν•¨(μ‹œν”„νŠΈ μ—°μ‚°)

left shiftμ—°μ‚°(κ³±ν•˜κΈ°)

μ™Όμͺ½μœΌλ‘œ μ΄λ™μ‹œν‚¬κ²½μš° μ΄λ™λœ 수만큼 μ™Όμͺ½μ˜ λΉ„νŠΈλŠ” 버렀지고
였λ₯Έμͺ½μ˜ λΉ„νŠΈλŠ” 0 으둜 μ±„μ›Œμ§

right shiftμ—°μ‚°(λ‚˜λˆ„κΈ°)

였λ₯Έμͺ½μœΌλ‘œ μ΄λ™μ‹œν‚¬κ²½μš° μ΄λ™λœ 수만큼 였λ₯Έμͺ½ λΉ„νŠΈλŠ” 버렀지고
μ™Όμͺ½μ˜ λΉ„νŠΈλŠ” 0 으둜 μ±„μ›Œμ§

int num01 = 15; 
int num02 = 8;  

printf(" ~ μ—°μ‚°μžμ— μ˜ν•œ 결괏값은 %dμž…λ‹ˆλ‹€.\n", ~num01); // 0,1값을 λ°˜λŒ€λ‘œ λ°”κΏ” 계산

printf("<< μ—°μ‚°μžμ— μ˜ν•œ 결괏값은 %dμž…λ‹ˆλ‹€.\n", num02 << 1); // 2둜 κ³±ν•˜κΈ°
printf("<< μ—°μ‚°μžμ— μ˜ν•œ 결괏값은 %dμž…λ‹ˆλ‹€.\n", num02 << 2); // 2둜 λ‘λ²ˆ κ³±ν•˜κΈ° 

printf(">> μ—°μ‚°μžμ— μ˜ν•œ 결괏값은 %dμž…λ‹ˆλ‹€.\n", num02 >> 1); // 2둜 λ‚˜λˆ„κΈ°
printf(">> μ—°μ‚°μžμ— μ˜ν•œ 결괏값은 %dμž…λ‹ˆλ‹€.\n", num02 >> 3); // 2둜 μ„Έλ²ˆ λ‚˜λˆ„κΈ°
profile

0개의 λŒ“κΈ€