일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- RDT
- TensorFlow
- 운영체제
- 3분 딥러닝
- Class Activation Map
- Linux
- 텐서플로우
- Generalized forward
- Network layer
- Router
- 모두를 위한 딥러닝
- 인터럽트
- 리눅스
- LED 제어
- file descriptors
- function call
- 펌웨어
- 딥러닝
- 신경망
- LED
- Switch
- 모두를 위한 딥러닝]
- 밑바닥부터 시작하는 딥러닝
- Interrupt
- 신경망 첫걸음
- Transport layer
- GPIO
- demultiplexing
- 스위치
- 디바이스 드라이버
Archives
- Today
- Total
건조젤리의 저장소
16진수 문자를 출력할때 "ffffff" 출력 현상 본문
코드
#include <stdio.h>int main(void){int i[5][5] = {{ 0x01,0x02,0x03,0x04,0x05 },{ 0x06,0x07,0x08,0x09,0x10 },{ 0x11,0x12,0x13,0x14,0x15 },{ 0x16,0x17,0x18,0x19,0x20 },{ 0x80,0x81,0xAA,0xDD,0xFF }};char *pt = (char *)i;for (int j = 0; j < 25*4; j++){printf("%X ", *pt++);if (((j+1) % 4) == 0)printf("\n");}return 0;}
출력1 0 0 02 0 0 0 3 0 0 0 4 0 0 0 5 0 0 0 6 0 0 0 7 0 0 0 8 0 0 0 9 0 0 0 10 0 0 0 11 0 0 0 12 0 0 0 13 0 0 0 14 0 0 0 15 0 0 0 16 0 0 0 17 0 0 0 18 0 0 0 19 0 0 0 20 0 0 0 FFFFFF80 0 0 0 FFFFFF81 0 0 0 FFFFFFAA 0 0 0 FFFFFFDD 0 0 0 FFFFFFFF 0 0 0
먼저 전체적인 코드는 int 형 배열의 내용을 char 형 포인터 변수를 통해 출력하는것 입니다.
int 형 자료형 |
4byte = 32bit |
char 형 자료형 |
1byte = 8bit |
char 형 포인터의 주소를 4번 늘려가면 int 형 배열 하나의 값을 알 수 있을것 입니다.
하지만 0x80 (128)부터 앞에 정체모를 "FFFFFF" 값이 붙는것을 볼 수 있는데 왜 붙는 걸까요.
이는 char 형 자료형이 나타낼 수 있는 범위를 알면 쉽게 이해할 수 있습니다.
char 형 자료형은 127 이상의 수를 표현할 수 없습니다.
따라서 128이 출력되는 것이 아니라 -128 이 출력된 것이였습니다.
그럼 이 문제를 어떻게 해결할 수 있을까요?
간단히 값의 범위가 크거나 값의 범위가 적절한 자료형을 이용하면 해결됩니다.
지금 제가 만든 int 형 배열 안의 값들은 1부터 255 까지의 값을 가지고 있습니다.
그렇다면 0부터 255 까지의 값을 표현 가능한 unsigned char을 이용하면 되는 것이죠.
코드
#include <stdio.h>int main(void){int i[5][5] = {{ 0x01,0x02,0x03,0x04,0x05 },{ 0x06,0x07,0x08,0x09,0x10 },{ 0x11,0x12,0x13,0x14,0x15 },{ 0x16,0x17,0x18,0x19,0x20 },{ 0x80,0x81,0xAA,0xDD,0xFF }};unsigned char *pt = (unsigned char *)i;for (int j = 0; j < 25*4; j++){printf("%X ", *pt++);if (((j+1) % 4) == 0)printf("\n");}return 0;}
출력1 0 0 0 2 0 0 0 3 0 0 0 4 0 0 0 5 0 0 0 6 0 0 0 7 0 0 0 8 0 0 0 9 0 0 0 10 0 0 0 11 0 0 0 12 0 0 0 13 0 0 0 14 0 0 0 15 0 0 0 16 0 0 0 17 0 0 0 18 0 0 0 19 0 0 0 20 0 0 0 80 0 0 0 81 0 0 0 AA 0 0 0 DD 0 0 0 FF 0 0 0
Comments