Show Bytes-计算机学习日志

本文记录了一系列关于计算机字节的实验,包括int/float转换为unsigned char,观察机器数存储模式(大端/小端),分析取反后机器数变化,探讨int转float时精度缺失问题,以及实现字母到数字字符的转换。通过代码分析和编译运行,深入理解字节存储和转换的原理。
摘要由CSDN通过智能技术生成

SHOW BYTES

实验内容

  • 实现int/float向unsigned char*/char/unsigned int的转换
  • 查看机器数在机器里的存储方式(大端/小端模式)
  • 取反后机器数的变化
  • 模拟int转float时精度缺失的情况
  • 实现字母向数字的转换

代码总览

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef unsigned char *byte_pointer;

void show_bytes(byte_pointer start, size_t len) 
{
    
   size_t i;    
   for (i = 0; i < len; i++)
   	printf("%p\t0x%.2x\n", &start[i], start[i]);
   printf("\n");
} 

void show_int(int x) 
{
    
   show_bytes((byte_pointer) &x, sizeof(int));
} 

void show_float(float x)
{
   
    show_bytes((byte_pointer) &x, sizeof(float));
}

void show_pointer(void *x)
{
   
    show_bytes((byte_pointer) &x, sizeof(void *));
}

void test_show_bytes(int val) 
{
    
   int ival = val;    
   double fval = (double) ival;
   int *pval = &ival;
   printf("Stack variable ival = %d\n", ival);    
   printf("(int)ival:\n");    
   show_int(ival);    
   printf("(float)ival:\n");    
   show_float(fval);    
   printf("&ival:\n");    
   show_pointer(pval);
}

void simple_show_a() 
{
    
    int val = 0x87654321;
    byte_pointer valp = (byte_pointer) &val;
    show_bytes(valp, 1); 
    show_bytes(valp, 2); 
    show_bytes(valp, 3); 
} 

void simple_show_b() 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值